TSK-456 Move taskana application into a single one with lazy modules loading
This commit is contained in:
parent
5467637c34
commit
4794ec97fc
|
@ -8,17 +8,13 @@ cache:
|
|||
timeout: 604800 #1 week
|
||||
directories:
|
||||
- "$HOME/.m2"
|
||||
- "workplace/node_modules"
|
||||
- "web/node_modules"
|
||||
- "monitor/node_modules"
|
||||
before_install:
|
||||
- nvm install $NODE_VERSION
|
||||
- npm install -g @angular/cli >/dev/null 2>&1
|
||||
- lib/deployment/change_version.sh rest/ lib/ web/
|
||||
install:
|
||||
- (cd workplace && npm install --no-progress && ng build --environment=prod --no-progress)
|
||||
&& (cd web && npm install --no-progress && npm run build:prod)
|
||||
&& (cd monitor && npm install --no-progress && ng build --environment=prod --no-progress)
|
||||
- (cd web && npm install --no-progress && npm run build:prod)
|
||||
&& mvn clean install -q -f lib/ -DskipTests=true -Dmaven.javadoc.skip=true -B
|
||||
&& mvn clean install -q -f rest/ -DskipTests=true -Dmaven.javadoc.skip=true -B
|
||||
script:
|
||||
|
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"project": {
|
||||
"name": "monitor"
|
||||
},
|
||||
"apps": [
|
||||
{
|
||||
"root": "src",
|
||||
"outDir": "dist",
|
||||
"assets": [
|
||||
"assets",
|
||||
"favicon.ico"
|
||||
],
|
||||
"index": "index.html",
|
||||
"main": "main.ts",
|
||||
"polyfills": "polyfills.ts",
|
||||
"test": "test.ts",
|
||||
"tsconfig": "tsconfig.app.json",
|
||||
"testTsconfig": "tsconfig.spec.json",
|
||||
"prefix": "app",
|
||||
"styles": [
|
||||
"../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap.scss",
|
||||
"./assets/_site.scss"
|
||||
],
|
||||
"scripts": ["../node_modules/jquery/dist/jquery.min.js","../node_modules/bootstrap/dist/js/bootstrap.min.js"],
|
||||
"environmentSource": "environments/environment.ts",
|
||||
"environments": {
|
||||
"dev": "environments/environment.ts",
|
||||
"prod": "environments/environment.prod.ts"
|
||||
}
|
||||
}
|
||||
],
|
||||
"e2e": {
|
||||
"protractor": {
|
||||
"config": "./protractor.conf.js"
|
||||
}
|
||||
},
|
||||
"lint": [
|
||||
{
|
||||
"project": "src/tsconfig.app.json"
|
||||
},
|
||||
{
|
||||
"project": "src/tsconfig.spec.json"
|
||||
},
|
||||
{
|
||||
"project": "e2e/tsconfig.e2e.json"
|
||||
}
|
||||
],
|
||||
"test": {
|
||||
"karma": {
|
||||
"config": "./karma.conf.js"
|
||||
}
|
||||
},
|
||||
"defaults": {
|
||||
"styleExt": "scss",
|
||||
"component": {}
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
# Editor configuration, see http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
|
@ -1,42 +0,0 @@
|
|||
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
||||
|
||||
# compiled output
|
||||
/dist
|
||||
/tmp
|
||||
/out-tsc
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# IDEs and editors
|
||||
/.idea
|
||||
.project
|
||||
.classpath
|
||||
.c9/
|
||||
*.launch
|
||||
.settings/
|
||||
*.sublime-workspace
|
||||
|
||||
# IDE - VSCode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
# misc
|
||||
/.sass-cache
|
||||
/connect.lock
|
||||
/coverage
|
||||
/libpeerconnection.log
|
||||
npm-debug.log
|
||||
testem.log
|
||||
/typings
|
||||
|
||||
# e2e
|
||||
/e2e/*.js
|
||||
/e2e/*.map
|
||||
|
||||
# System Files
|
||||
.DS_Store
|
||||
Thumbs.db
|
|
@ -1,28 +0,0 @@
|
|||
# Monitor
|
||||
|
||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.3.
|
||||
|
||||
## Development server
|
||||
|
||||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||
|
||||
## Code scaffolding
|
||||
|
||||
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|module`.
|
||||
|
||||
## Build
|
||||
|
||||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Running end-to-end tests
|
||||
|
||||
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||
Before running the tests make sure you are serving the app via `ng serve`.
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
@ -1,14 +0,0 @@
|
|||
import { MonitorPage } from './app.po';
|
||||
|
||||
describe('monitor App', () => {
|
||||
let page: MonitorPage;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new MonitorPage();
|
||||
});
|
||||
|
||||
it('should display message saying app works', () => {
|
||||
page.navigateTo();
|
||||
expect(page.getParagraphText()).toEqual('app works!');
|
||||
});
|
||||
});
|
|
@ -1,11 +0,0 @@
|
|||
import { browser, by, element } from 'protractor';
|
||||
|
||||
export class MonitorPage {
|
||||
navigateTo() {
|
||||
return browser.get('/');
|
||||
}
|
||||
|
||||
getParagraphText() {
|
||||
return element(by.css('app-root h1')).getText();
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/e2e",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/0.13/config/configuration-file.html
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', '@angular/cli'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-jasmine-html-reporter'),
|
||||
require('karma-coverage-istanbul-reporter'),
|
||||
require('@angular/cli/plugins/karma')
|
||||
],
|
||||
client:{
|
||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
||||
},
|
||||
files: [
|
||||
{ pattern: './src/test.ts', watched: false }
|
||||
],
|
||||
preprocessors: {
|
||||
'./src/test.ts': ['@angular/cli']
|
||||
},
|
||||
mime: {
|
||||
'text/x-typescript': ['ts','tsx']
|
||||
},
|
||||
coverageIstanbulReporter: {
|
||||
reports: [ 'html', 'lcovonly' ],
|
||||
fixWebpackSourcePaths: true
|
||||
},
|
||||
angularCli: {
|
||||
environment: 'dev'
|
||||
},
|
||||
reporters: config.angularCli && config.angularCli.codeCoverage
|
||||
? ['progress', 'coverage-istanbul']
|
||||
: ['progress', 'kjhtml'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false
|
||||
});
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -1,56 +0,0 @@
|
|||
{
|
||||
"name": "monitor",
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
"build": "ng build",
|
||||
"build:prod": "ng build --env=prod",
|
||||
"test": "ng test",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/common": "5.2.1",
|
||||
"@angular/compiler": "5.2.1",
|
||||
"@angular/core": "5.2.1",
|
||||
"@angular/forms": "5.2.1",
|
||||
"@angular/http": "5.2.1",
|
||||
"@angular/platform-browser": "5.2.1",
|
||||
"@angular/platform-browser-dynamic": "5.2.1",
|
||||
"@angular/router": "5.2.1",
|
||||
"angular-svg-icon": "5.0.0",
|
||||
"bootstrap": "3.3.7",
|
||||
"bootstrap-sass": "3.3.7",
|
||||
"core-js": "2.5.3",
|
||||
"jquery": "3.3.1",
|
||||
"ngx-bootstrap": "2.0.1",
|
||||
"node-sass": "4.7.2",
|
||||
"rxjs": "5.5.6",
|
||||
"zone.js": "0.8.20",
|
||||
"chart.js": "2.7.1",
|
||||
"ng2-charts": "1.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/cli": "1.7.3",
|
||||
"@angular/compiler-cli": "5.2.8",
|
||||
"@types/jasmine": "2.8.4",
|
||||
"@types/node": "9.3.0",
|
||||
"codelyzer": "4.1.0",
|
||||
"jasmine-core": "2.9.1",
|
||||
"jasmine-spec-reporter": "4.2.1",
|
||||
"karma": "2.0.0",
|
||||
"karma-chrome-launcher": "2.2.0",
|
||||
"karma-cli": "1.0.1",
|
||||
"karma-jasmine": "1.1.1",
|
||||
"karma-jasmine-html-reporter": "0.2.2",
|
||||
"karma-coverage-istanbul-reporter": "1.3.3",
|
||||
"protractor": "5.2.2",
|
||||
"ts-node": "4.1.0",
|
||||
"tslint": "5.9.1",
|
||||
"typescript": "2.5.3",
|
||||
"moment": "2.21.0"
|
||||
}
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
// Protractor configuration file, see link for more information
|
||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
||||
|
||||
const { SpecReporter } = require('jasmine-spec-reporter');
|
||||
|
||||
exports.config = {
|
||||
allScriptsTimeout: 11000,
|
||||
specs: [
|
||||
'./e2e/**/*.e2e-spec.ts'
|
||||
],
|
||||
capabilities: {
|
||||
'browserName': 'chrome'
|
||||
},
|
||||
directConnect: true,
|
||||
baseUrl: 'http://localhost:4200/',
|
||||
framework: 'jasmine',
|
||||
jasmineNodeOpts: {
|
||||
showColors: true,
|
||||
defaultTimeoutInterval: 30000,
|
||||
print: function() {}
|
||||
},
|
||||
beforeLaunch: function() {
|
||||
require('ts-node').register({
|
||||
project: 'e2e/tsconfig.e2e.json'
|
||||
});
|
||||
},
|
||||
onPrepare() {
|
||||
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
||||
}
|
||||
};
|
|
@ -1,38 +0,0 @@
|
|||
<nav class="navbar navbar-fixed-top">
|
||||
<div class="navbar show no-border-radius navbar-inverse no-gutter">
|
||||
<div class="col-xs-11 col-md-11">
|
||||
<svg-icon class="logo hidden visible-xs visible-sm" src="./assets/icons/logo.svg"></svg-icon>
|
||||
<ul class="nav logo">
|
||||
<svg-icon class="logo hidden-xs hidden-sm" src="./assets/icons/logo.svg"></svg-icon>
|
||||
<p class="navbar-brand no-margin hidden-xs hidden-sm"> <a [href]="monitorUrl">Taskana Monitor </a></p>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-1">
|
||||
<button type="button" class="navbar-toggle collapsed show" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="navbar" class="collapse pull-right navbar-inverse" data-html="false">
|
||||
<ul class="nav navbar-nav navbar-right content-margin">
|
||||
<li><a [href]="adminUrl">Admininistration</a></li>
|
||||
<li><a [href]="workplaceUrl">Workplace</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container">
|
||||
<tabset #staticTabs>
|
||||
<tab heading="Tasks">
|
||||
<tasks></tasks>
|
||||
</tab>
|
||||
<tab heading="Workbaskets">
|
||||
<workbasket></workbasket>
|
||||
</tab>
|
||||
</tabset>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
svg-icon.logo {
|
||||
float: left;
|
||||
width: 55px;
|
||||
height: 55px;
|
||||
margin: 0px 15px;
|
||||
fill:white
|
||||
}
|
||||
|
||||
.logo-container {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
p.navbar-brand >a{
|
||||
text-decoration: none;
|
||||
color: #9d9d9d;
|
||||
&:hover {
|
||||
color: white;
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
import { TestBed, async } from '@angular/core/testing';
|
||||
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
describe('AppComponent', () => {
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [
|
||||
AppComponent
|
||||
],
|
||||
}).compileComponents();
|
||||
}));
|
||||
|
||||
it('should create the app', async(() => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.debugElement.componentInstance;
|
||||
expect(app).toBeTruthy();
|
||||
}));
|
||||
|
||||
it(`should have as title 'app works!'`, async(() => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.debugElement.componentInstance;
|
||||
expect(app.title).toEqual('app works!');
|
||||
}));
|
||||
|
||||
it('should render title in a h1 tag', async(() => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
fixture.detectChanges();
|
||||
const compiled = fixture.debugElement.nativeElement;
|
||||
expect(compiled.querySelector('h1').textContent).toContain('app works!');
|
||||
}));
|
||||
});
|
|
@ -1,14 +0,0 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { environment } from '../environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.scss']
|
||||
})
|
||||
export class AppComponent {
|
||||
|
||||
monitorUrl: string = environment.taskanaMonitorUrl;
|
||||
adminUrl: string = environment.taskanaAdminUrl;
|
||||
workplaceUrl: string = environment.taskanaWorkplaceUrl;
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { HttpModule } from '@angular/http';
|
||||
import { AlertModule } from 'ngx-bootstrap';
|
||||
import { ChartsModule } from 'ng2-charts';
|
||||
import { TabsModule } from 'ngx-bootstrap/tabs';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
|
||||
import { AppComponent } from './app.component';
|
||||
import { TasksComponent } from './tasks/tasks.component';
|
||||
import { WorkbasketComponent } from './workbasket/workbasket.component';
|
||||
import { Report } from "./report/report.component";
|
||||
import { MapToIterable } from "./pipes/mapToIterable";
|
||||
import { OrderBy } from "./pipes/orderBy";
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
TasksComponent,
|
||||
WorkbasketComponent,
|
||||
Report,
|
||||
MapToIterable,
|
||||
OrderBy
|
||||
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
FormsModule,
|
||||
HttpModule,
|
||||
AlertModule.forRoot(),
|
||||
ChartsModule,
|
||||
TabsModule.forRoot(),
|
||||
HttpClientModule,
|
||||
AngularSvgIconModule
|
||||
],
|
||||
providers: [HttpClientModule],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule {
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { Headers, Http, RequestOptions } from '@angular/http';
|
||||
import { environment } from '../../environments/environment';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { State } from '../model/state';
|
||||
import { WorkbasketCounter } from '../model/workbasket-counter';
|
||||
|
||||
@Injectable()
|
||||
export class RestConnectorService {
|
||||
|
||||
constructor(private http: Http) {
|
||||
}
|
||||
|
||||
getTaskStatistics(): Observable<State[]> {
|
||||
return this.http.get(environment.taskanaRestUrl + "/v1/monitor/countByState?states=READY,CLAIMED,COMPLETED", this.createAuthorizationHeader())
|
||||
.map(res => res.json());
|
||||
}
|
||||
|
||||
|
||||
getWorkbasketStatistics(): Observable<WorkbasketCounter> {
|
||||
return this.http.get(environment.taskanaRestUrl + "/v1/monitor/taskcountByWorkbasketDaysAndState?daysInPast=5&states=READY,CLAIMED,COMPLETED", this.createAuthorizationHeader())
|
||||
.map(res => res.json());
|
||||
}
|
||||
|
||||
getTaskStatusReport(): Observable<Object> {
|
||||
return this.http.get(environment.taskanaRestUrl + "/v1/monitor/taskStatusReport", this.createAuthorizationHeader())
|
||||
.map(res => res.json());
|
||||
}
|
||||
|
||||
private createAuthorizationHeader() {
|
||||
let headers: Headers = new Headers();
|
||||
headers.append("Authorization", "Basic dXNlcl8xXzE6dXNlcl8xXzE=");
|
||||
|
||||
return new RequestOptions({ headers: headers });
|
||||
}
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Base structure
|
||||
*/
|
||||
/* Move down content because we have a fixed navbar that is 55px tall */
|
||||
body {
|
||||
padding-top: 55px;
|
||||
}
|
||||
|
||||
/*
|
||||
* All side bar links styling.
|
||||
*/
|
||||
.nav-sidebar > li > a {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.nav-sidebar > .active > a,
|
||||
.nav-sidebar > .active > a:hover,
|
||||
.nav-sidebar > .active > a:focus {
|
||||
color: #fff;
|
||||
background-color: #428bca;
|
||||
}
|
||||
|
||||
|
||||
.nav.nav-tabs {
|
||||
& > li {
|
||||
& > a{
|
||||
min-height: 56px;
|
||||
padding-top: 17px;
|
||||
}
|
||||
|
||||
&:first-child > a{
|
||||
border-left: none;
|
||||
}
|
||||
}
|
||||
& > p{
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.navbar-inverse {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.no-margin {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.content-margin {
|
||||
margin: 0px 10px 0px 10px;
|
||||
}
|
||||
|
||||
.no-border-radius {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.container-main {
|
||||
overflow-y: hidden;
|
||||
/*Min mobile view size*/
|
||||
min-width: 420px;
|
||||
}
|
||||
|
||||
.container-scrollable {
|
||||
max-height: calc(100vh - 52px);
|
||||
height: calc(100vh - 52px);
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 333.333 333.333"><defs><linearGradient id="b"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient></defs><path d="M43.833 255.275c-20.93-33.066-38.055-61.759-38.055-63.763 0-5.608 17.891-32.476 21.625-32.476 3.905 0 79.417 118.13 79.417 124.238 0 5.927-17.542 32.12-21.511 32.12-2.18 0-17.224-21.805-41.476-60.119zm79.634 1.345C100.08 219.668 86.269 195.86 86.269 192.5c0-6.12 16.822-33.465 20.586-33.465 1.373 0 15.027 19.697 30.341 43.77l27.845 43.772 73.263-115.211C278.599 68 312.194 16.156 312.96 16.156c3.129 0 20.048 25.464 21.036 31.66.952 5.972-7.666 20.42-81.794 137.127-65.74 103.501-83.756 130.452-87.199 130.452-3.374 0-12.614-13.075-41.536-58.775zm29.963-79.472c-4.913-7.831-8.933-16.05-8.933-18.266 0-4.024 87.157-142.726 89.686-142.726 2.129 0 21.632 30.162 21.632 33.454 0 4.613-87.881 141.776-90.837 141.776-1.439 0-6.635-6.407-11.548-14.238z"/><text x="5.34" y="58.027" transform="scale(.7329 1.36446)" font-size="63.778" stroke-width="5.315"><tspan x="5.34" y="58.027">Taskana</tspan></text><flowRoot xml:space="preserve"><flowRegion><path d="M-64.918-13.229H514.35v435.45H-64.918z"/></flowRegion><flowPara/></flowRoot></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1,7 +0,0 @@
|
|||
export const environment = {
|
||||
production: true,
|
||||
taskanaAdminUrl: 'http://taskana-admin.mybluemix.net',
|
||||
taskanaWorkplaceUrl: 'http://taskana-workplace.mybluemix.net',
|
||||
taskanaMonitorUrl: 'http://taskana-monitor.mybluemix.net',
|
||||
taskanaRestUrl: 'http://taskana-rest.mybluemix.net'
|
||||
};
|
|
@ -1,12 +0,0 @@
|
|||
// The file contents for the current environment will overwrite these during build.
|
||||
// The build system defaults to the dev environment which uses `environment.ts`, but if you do
|
||||
// `ng build --env=prod` then `environment.prod.ts` will be used instead.
|
||||
// The list of which env maps to which file can be found in `.angular-cli.json`.
|
||||
|
||||
export const environment = {
|
||||
production: false,
|
||||
taskanaWorkplaceUrl: 'http://localhost:4200',
|
||||
taskanaAdminUrl: 'http://localhost:4201',
|
||||
taskanaMonitorUrl: 'http://localhost:4202',
|
||||
taskanaRestUrl: 'http://localhost:8080'
|
||||
};
|
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB |
|
@ -1,19 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Monitor</title>
|
||||
<base href="/">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
|
||||
</head>
|
||||
|
||||
<body class ="container-main">
|
||||
<app-root></app-root>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.bundle.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,11 +0,0 @@
|
|||
import { enableProdMode } from '@angular/core';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { AppModule } from './app/app.module';
|
||||
import { environment } from './environments/environment';
|
||||
|
||||
if (environment.production) {
|
||||
enableProdMode();
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
|
@ -1,72 +0,0 @@
|
|||
/**
|
||||
* This file includes polyfills needed by Angular and is loaded before the app.
|
||||
* You can add your own extra polyfills to this file.
|
||||
*
|
||||
* This file is divided into 2 sections:
|
||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
|
||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
|
||||
* file.
|
||||
*
|
||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
|
||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
|
||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
|
||||
*
|
||||
* Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
|
||||
*/
|
||||
|
||||
/***************************************************************************************************
|
||||
* BROWSER POLYFILLS
|
||||
*/
|
||||
|
||||
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
|
||||
// import 'core-js/es6/symbol';
|
||||
// import 'core-js/es6/object';
|
||||
// import 'core-js/es6/function';
|
||||
// import 'core-js/es6/parse-int';
|
||||
// import 'core-js/es6/parse-float';
|
||||
// import 'core-js/es6/number';
|
||||
// import 'core-js/es6/math';
|
||||
// import 'core-js/es6/string';
|
||||
// import 'core-js/es6/date';
|
||||
// import 'core-js/es6/array';
|
||||
// import 'core-js/es6/regexp';
|
||||
// import 'core-js/es6/map';
|
||||
// import 'core-js/es6/set';
|
||||
|
||||
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
|
||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
||||
|
||||
/** IE10 and IE11 requires the following to support `@angular/animation`. */
|
||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
||||
|
||||
|
||||
/** Evergreen browsers require these. **/
|
||||
import 'core-js/es6/reflect';
|
||||
import 'core-js/es7/reflect';
|
||||
|
||||
|
||||
/** ALL Firefox browsers require the following to support `@angular/animation`. **/
|
||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* Zone JS is required by Angular itself.
|
||||
*/
|
||||
import 'zone.js/dist/zone'; // Included with Angular CLI.
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* APPLICATION IMPORTS
|
||||
*/
|
||||
|
||||
/**
|
||||
* Date, currency, decimal and percent pipes.
|
||||
* Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
|
||||
*/
|
||||
// import 'intl'; // Run `npm install --save intl`.
|
||||
/**
|
||||
* Need to import at least one locale-data with intl.
|
||||
*/
|
||||
// import 'intl/locale-data/jsonp/en';
|
|
@ -1 +0,0 @@
|
|||
/* You can add global styles to this file, and also import other style files */
|
|
@ -1,32 +0,0 @@
|
|||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
||||
|
||||
import 'zone.js/dist/long-stack-trace-zone';
|
||||
import 'zone.js/dist/proxy.js';
|
||||
import 'zone.js/dist/sync-test';
|
||||
import 'zone.js/dist/jasmine-patch';
|
||||
import 'zone.js/dist/async-test';
|
||||
import 'zone.js/dist/fake-async-test';
|
||||
import { getTestBed } from '@angular/core/testing';
|
||||
import {
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting
|
||||
} from '@angular/platform-browser-dynamic/testing';
|
||||
|
||||
// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
|
||||
declare var __karma__: any;
|
||||
declare var require: any;
|
||||
|
||||
// Prevent Karma from running prematurely.
|
||||
__karma__.loaded = function () {};
|
||||
|
||||
// First, initialize the Angular testing environment.
|
||||
getTestBed().initTestEnvironment(
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting()
|
||||
);
|
||||
// Then we find all the tests.
|
||||
const context = require.context('./', true, /\.spec\.ts$/);
|
||||
// And load the modules.
|
||||
context.keys().map(context);
|
||||
// Finally, start Karma to run the tests.
|
||||
__karma__.start();
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/app",
|
||||
"module": "es2015",
|
||||
"baseUrl": "",
|
||||
"types": []
|
||||
},
|
||||
"exclude": [
|
||||
"test.ts",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/spec",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"baseUrl": "",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"test.ts"
|
||||
],
|
||||
"include": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
/* SystemJS module definition */
|
||||
declare var module: NodeModule;
|
||||
interface NodeModule {
|
||||
id: string;
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist/out-tsc",
|
||||
"baseUrl": "src",
|
||||
"sourceMap": true,
|
||||
"declaration": false,
|
||||
"moduleResolution": "node",
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"target": "es5",
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
],
|
||||
"lib": [
|
||||
"es2016",
|
||||
"dom"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
{
|
||||
"rulesDirectory": [
|
||||
"node_modules/codelyzer"
|
||||
],
|
||||
"rules": {
|
||||
"callable-types": true,
|
||||
"class-name": true,
|
||||
"comment-format": [
|
||||
true,
|
||||
"check-space"
|
||||
],
|
||||
"curly": true,
|
||||
"eofline": true,
|
||||
"forin": true,
|
||||
"import-blacklist": [
|
||||
true,
|
||||
"rxjs"
|
||||
],
|
||||
"import-spacing": true,
|
||||
"indent": [
|
||||
true,
|
||||
"spaces"
|
||||
],
|
||||
"interface-over-type-literal": true,
|
||||
"label-position": true,
|
||||
"max-line-length": [
|
||||
true,
|
||||
140
|
||||
],
|
||||
"member-access": false,
|
||||
"member-ordering": [
|
||||
true,
|
||||
"static-before-instance",
|
||||
"variables-before-functions"
|
||||
],
|
||||
"no-arg": true,
|
||||
"no-bitwise": true,
|
||||
"no-console": [
|
||||
true,
|
||||
"debug",
|
||||
"info",
|
||||
"time",
|
||||
"timeEnd",
|
||||
"trace"
|
||||
],
|
||||
"no-construct": true,
|
||||
"no-debugger": true,
|
||||
"no-empty": false,
|
||||
"no-empty-interface": true,
|
||||
"no-eval": true,
|
||||
"no-inferrable-types": [
|
||||
true,
|
||||
"ignore-params"
|
||||
],
|
||||
"no-shadowed-variable": true,
|
||||
"no-string-literal": false,
|
||||
"no-string-throw": true,
|
||||
"no-switch-case-fall-through": true,
|
||||
"no-trailing-whitespace": true,
|
||||
"no-unused-expression": true,
|
||||
"no-use-before-declare": true,
|
||||
"no-var-keyword": true,
|
||||
"object-literal-sort-keys": false,
|
||||
"one-line": [
|
||||
true,
|
||||
"check-open-brace",
|
||||
"check-catch",
|
||||
"check-else",
|
||||
"check-whitespace"
|
||||
],
|
||||
"prefer-const": true,
|
||||
"quotemark": [
|
||||
true,
|
||||
"single"
|
||||
],
|
||||
"radix": true,
|
||||
"semicolon": [
|
||||
"always"
|
||||
],
|
||||
"triple-equals": [
|
||||
true,
|
||||
"allow-null-check"
|
||||
],
|
||||
"typedef-whitespace": [
|
||||
true,
|
||||
{
|
||||
"call-signature": "nospace",
|
||||
"index-signature": "nospace",
|
||||
"parameter": "nospace",
|
||||
"property-declaration": "nospace",
|
||||
"variable-declaration": "nospace"
|
||||
}
|
||||
],
|
||||
"typeof-compare": true,
|
||||
"unified-signatures": true,
|
||||
"variable-name": false,
|
||||
"whitespace": [
|
||||
true,
|
||||
"check-branch",
|
||||
"check-decl",
|
||||
"check-operator",
|
||||
"check-separator",
|
||||
"check-type"
|
||||
],
|
||||
"directive-selector": [
|
||||
true,
|
||||
"attribute",
|
||||
"app",
|
||||
"camelCase"
|
||||
],
|
||||
"component-selector": [
|
||||
true,
|
||||
"element",
|
||||
"app",
|
||||
"kebab-case"
|
||||
],
|
||||
"use-input-property-decorator": true,
|
||||
"use-output-property-decorator": true,
|
||||
"use-host-property-decorator": true,
|
||||
"no-input-rename": true,
|
||||
"no-output-rename": true,
|
||||
"use-life-cycle-interface": true,
|
||||
"use-pipe-transform-interface": true,
|
||||
"component-class-suffix": true,
|
||||
"directive-class-suffix": true,
|
||||
"no-access-missing-member": true,
|
||||
"templates-use-public": true,
|
||||
"invoke-injectable": true
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "admin",
|
||||
"version": "0.0.0",
|
||||
"name": "taskana",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -61,9 +61,9 @@
|
|||
}
|
||||
},
|
||||
"@angular/animations": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.3.tgz",
|
||||
"integrity": "sha512-K9rOsRGwt7Zmp/rNdvBmgBKqvEdgCyZF0kvwxrmZfq1Zj0GAkfTAKPL007493O6XFd+icfu/+kmYeqXBGB4gKA==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.10.tgz",
|
||||
"integrity": "sha512-QNYXqnti8BeFriNaZ/juLnO6l0MVlVNUmLycC9ma+pdTiEJl8rtgZ0WXxgOCjScyKpInkWn2J+m9FI/78SYFpw==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
|
@ -188,77 +188,77 @@
|
|||
}
|
||||
},
|
||||
"@angular/common": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.1.tgz",
|
||||
"integrity": "sha512-O7FA4Qpcu6GYMzlsNTHtUsAl6W0SXepP7qEMx83fC1Xje2GEtulp/99Pg6bvpFKiZYdCjJDhjbUZhIO5x0UncQ==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.10.tgz",
|
||||
"integrity": "sha512-4zgI/Q6bo/KCvrDPf8gc2IpTJ3PFKgd9RF4jZuh1uc+uEYTAj396tDF8o412AJ/iwtYOHWUx+YgzAvT8dHXZ5Q==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/compiler": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.1.tgz",
|
||||
"integrity": "sha512-c/HDfbDr8yDUCoVCbGHgoae3YCoWG3EuM/l7jfHflE8sbdppiFVxCRd3VkygkwfPGpUZbZaW2x/OK4Z1dQa34g==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.10.tgz",
|
||||
"integrity": "sha512-FI9ip+aWGpKQB+VfNbFQ+wyh0K4Th8Q/MrHxW6CN4BYVAfFtfORRohvyyYk0sRxuQO8JFN3W/FFfdXjuL+cZKw==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/compiler-cli": {
|
||||
"version": "5.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.8.tgz",
|
||||
"integrity": "sha512-u0cUfpbU2VNmRfkSS/tlsAzF24/LdlXqv8RFFLReJhwZTv4mKl1DzSjvOf6kfALGHDqCdHsVWcx2YJ8f6CeCMg==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.10.tgz",
|
||||
"integrity": "sha512-RhI26rVALRn3LrU0CAIEj56m60vLyCd8e2Ah79yRP6vlXL8k6SylXytUljTeXIBtiVu2Bi1qKGf2s1X674GzCw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chokidar": "1.7.0",
|
||||
"minimist": "1.2.0",
|
||||
"reflect-metadata": "0.1.12",
|
||||
"tsickle": "0.27.2"
|
||||
"tsickle": "0.27.5"
|
||||
}
|
||||
},
|
||||
"@angular/core": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.1.tgz",
|
||||
"integrity": "sha512-2kyXVl+OK/LRUisSfILkRyWiD2BGXysQkN2dwxfwYZwDciH7o8wGSlDDZw0lXIBt0Ly0stYiorIIJGVs5TffaA==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.10.tgz",
|
||||
"integrity": "sha512-glDuTtHTcAVhfU3NVewxz/W+Iweq5IaeW2tnMa+RKLopYk9fRs8eR5iTixTGvegwKR770vfXg/gR7P6Ii5cYGQ==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/forms": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.1.tgz",
|
||||
"integrity": "sha512-DeTpReZcK93FBxTdXqtmuzuW5blMu4fWe7JtmDXWD9UhTw7DwRbPO+7yFRbbfSDd3UzfGfqYBqOlSOdPh9dLbg==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.10.tgz",
|
||||
"integrity": "sha512-XQR4cd1Eey9aDT3CxQ6pbBWSBEg1408ZV/EUblKgMgt4k8PfDiuLSbF+MI/TOYAg3UkcVAxN1no4hWtkou8Rpw==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/http": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.1.tgz",
|
||||
"integrity": "sha512-wMX7rnZcanYT2uVeqr1V9k9lduxZprVjvgetUlj6IuO7kbr22SAJN7phuubI0uAd7MUb7uDXBG8cJ00Q/NH6zw==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.10.tgz",
|
||||
"integrity": "sha512-euEJbxpH+pKBAwGUSo7XvNdods/kY6I4s8OUaJPUMtraQkhE6TJ0OMYvnqmGbdLimsg3ZMxqm54jCOjj9saEOQ==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/platform-browser": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.1.tgz",
|
||||
"integrity": "sha512-+cE7FM6/WIMZWpxf+LxYhfTPBbxSvLNZv5+RnGcOeg4nEG3x0Ny1dr14r5HyudvKfu/A+xTlVCNY7RjZ6HsWVw==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.10.tgz",
|
||||
"integrity": "sha512-oF1A0BS1wpTlxfv6YytkFCkztvvtVllnh5IUnoyV+siVT3qogKat9ZmzCmcDJ5SvIDYkY+rXBhumyFzBZ5ufFg==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/platform-browser-dynamic": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.1.tgz",
|
||||
"integrity": "sha512-S73suoYfGIj7eQlOBXvj3BO8mW8TUUZEUZ/nvFgB/jsb6PtYk1ByIVIWjcV5yttd4TXf7ZhaEYZPm1vBjIN0pA==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.10.tgz",
|
||||
"integrity": "sha512-TquhIkyR6uXfmzk6RiEl5+8Kk653Wqe4F+pKn5gFi+Z6cDm4nkDlT9kgT3e6c08JHw9fGGAvNmsalq7oS+PnNg==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/router": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.1.tgz",
|
||||
"integrity": "sha512-NS8ttrfpjETfIt8Wn4oCP5KQ55UKuj6g3iG/yduoDMWel19KOINUYqz5ujL1gHha4A4Tgs1tBZKQKr0LmapTdA==",
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.10.tgz",
|
||||
"integrity": "sha512-63op4yExVsm+Ng4dlCeexQdXKYMnzxtmX116V3hY/mHi1MPTR20uPCx55U8xR0kQvxs0ea8tmJxHdMpz76edqA==",
|
||||
"requires": {
|
||||
"tslib": "1.9.0"
|
||||
}
|
||||
|
@ -1687,6 +1687,39 @@
|
|||
"supports-color": "2.0.0"
|
||||
}
|
||||
},
|
||||
"chart.js": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.1.tgz",
|
||||
"integrity": "sha512-pX1oQAY86MiuyZ2hY593Acbl4MLHKrBBhhmZ1YqSadzQbbsBE2rnd6WISoHjIsdf0WDeC0hbePYCz2ZxkV8L+g==",
|
||||
"requires": {
|
||||
"chartjs-color": "2.2.0",
|
||||
"moment": "2.18.1"
|
||||
}
|
||||
},
|
||||
"chartjs-color": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz",
|
||||
"integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=",
|
||||
"requires": {
|
||||
"chartjs-color-string": "0.5.0",
|
||||
"color-convert": "0.5.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"color-convert": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
|
||||
"integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartjs-color-string": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz",
|
||||
"integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==",
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
|
||||
|
@ -1935,8 +1968,7 @@
|
|||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
},
|
||||
"colors": {
|
||||
"version": "1.1.2",
|
||||
|
@ -7333,6 +7365,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.18.1",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz",
|
||||
"integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8="
|
||||
},
|
||||
"move-concurrently": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
||||
|
@ -7442,6 +7479,19 @@
|
|||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ng2-auto-complete": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/ng2-auto-complete/-/ng2-auto-complete-0.12.0.tgz",
|
||||
"integrity": "sha1-mnjDnFASQE57yDZcA4Fat/aM6j0="
|
||||
},
|
||||
"ng2-charts": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-1.6.0.tgz",
|
||||
"integrity": "sha512-9w0WH69x5/nuqC1og2WaY39NbaBqTGIP1+5gZaH7/KPN6UEPonNg/pYnsIVklLj1DWPWXKa8+XXIJZ1jy5nLxg==",
|
||||
"requires": {
|
||||
"chart.js": "2.7.1"
|
||||
}
|
||||
},
|
||||
"ngx-bootstrap": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-2.0.1.tgz",
|
||||
|
@ -10833,15 +10883,15 @@
|
|||
}
|
||||
},
|
||||
"tsickle": {
|
||||
"version": "0.27.2",
|
||||
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.2.tgz",
|
||||
"integrity": "sha512-KW+ZgY0t2cq2Qib1sfdgMiRnk+cr3brUtzZoVWjv+Ot3jNxVorFBUH+6In6hl8Dg7BI2AAFf69NHkwvZNMSFwA==",
|
||||
"version": "0.27.5",
|
||||
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.5.tgz",
|
||||
"integrity": "sha512-NP+CjM1EXza/M8mOXBLH3vkFEJiu1zfEAlC5WdJxHPn8l96QPz5eooP6uAgYtw1CcKfuSyIiheNUdKxtDWCNeg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "1.2.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"source-map": "0.6.1",
|
||||
"source-map-support": "0.5.3"
|
||||
"source-map-support": "0.5.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
|
@ -10851,9 +10901,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz",
|
||||
"integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==",
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz",
|
||||
"integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"source-map": "0.6.1"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "admin",
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"name": "taskana",
|
||||
"version": "1.0.0",
|
||||
"license": "Novatec gmbh",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
|
@ -14,15 +14,15 @@
|
|||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "5.2.3",
|
||||
"@angular/common": "5.2.1",
|
||||
"@angular/compiler": "5.2.1",
|
||||
"@angular/core": "5.2.1",
|
||||
"@angular/forms": "5.2.1",
|
||||
"@angular/http": "5.2.1",
|
||||
"@angular/platform-browser": "5.2.1",
|
||||
"@angular/platform-browser-dynamic": "5.2.1",
|
||||
"@angular/router": "5.2.1",
|
||||
"@angular/animations": "5.2.10",
|
||||
"@angular/common": "5.2.10",
|
||||
"@angular/compiler": "5.2.10",
|
||||
"@angular/core": "5.2.10",
|
||||
"@angular/forms": "5.2.10",
|
||||
"@angular/http": "5.2.10",
|
||||
"@angular/platform-browser": "5.2.10",
|
||||
"@angular/platform-browser-dynamic": "5.2.10",
|
||||
"@angular/router": "5.2.10",
|
||||
"file-saver": "1.3.3",
|
||||
"angular-svg-icon": "5.0.0",
|
||||
"angular-tree-component": "7.1.0",
|
||||
|
@ -34,11 +34,14 @@
|
|||
"ngx-bootstrap": "2.0.1",
|
||||
"node-sass": "4.7.2",
|
||||
"rxjs": "5.5.6",
|
||||
"zone.js": "0.8.20"
|
||||
"zone.js": "0.8.20",
|
||||
"chart.js": "2.7.1",
|
||||
"ng2-charts": "1.6.0",
|
||||
"ng2-auto-complete": "0.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/cli": "1.7.3",
|
||||
"@angular/compiler-cli": "5.2.8",
|
||||
"@angular/compiler-cli": "5.2.10",
|
||||
"@types/jasmine": "2.8.4",
|
||||
"@types/node": "9.3.0",
|
||||
"codelyzer": "4.1.0",
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
|
||||
import { WorkbasketListComponent } from 'app/administration/workbasket/master/list/workbasket-list.component';
|
||||
import { WorkbasketDetailsComponent } from 'app/administration/workbasket/details/workbasket-details.component';
|
||||
import { MasterAndDetailComponent } from 'app/shared/master-and-detail/master-and-detail.component';
|
||||
import { NoAccessComponent } from 'app/administration/workbasket/details/noAccess/no-access.component';
|
||||
import { ClassificationListComponent } from 'app/administration/classification/master/list/classification-list.component';
|
||||
import { ClassificationDetailsComponent } from 'app/administration/classification/details/classification-details.component';
|
||||
import { DomainGuard } from 'app/guards/domain-guard';
|
||||
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: 'workbaskets',
|
||||
component: MasterAndDetailComponent,
|
||||
canActivate: [DomainGuard],
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: WorkbasketListComponent,
|
||||
outlet: 'master'
|
||||
},
|
||||
{
|
||||
path: 'noaccess',
|
||||
component: NoAccessComponent,
|
||||
outlet: 'detail'
|
||||
},
|
||||
{
|
||||
path: 'new-classification/:id',
|
||||
component: WorkbasketDetailsComponent,
|
||||
outlet: 'detail'
|
||||
},
|
||||
{
|
||||
path: ':id',
|
||||
component: WorkbasketDetailsComponent,
|
||||
outlet: 'detail'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'classifications',
|
||||
component: MasterAndDetailComponent,
|
||||
canActivate: [DomainGuard],
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: ClassificationListComponent,
|
||||
outlet: 'master'
|
||||
},
|
||||
{
|
||||
path: ':id',
|
||||
component: ClassificationDetailsComponent,
|
||||
outlet: 'detail'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
redirectTo: 'workbaskets',
|
||||
pathMatch: 'full'
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class AdministrationRoutingModule { }
|
|
@ -0,0 +1,89 @@
|
|||
// tslint:enable:max-line-length
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { Ng2AutoCompleteModule } from 'ng2-auto-complete';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
import { AlertModule } from 'ngx-bootstrap';
|
||||
import { SharedModule } from 'app/shared/shared.module';
|
||||
import { AdministrationRoutingModule } from './administration-routing.module';
|
||||
|
||||
/**
|
||||
* Components
|
||||
*/
|
||||
import { WorkbasketListComponent } from './workbasket/master/list/workbasket-list.component';
|
||||
import { WorkbasketListToolbarComponent } from './workbasket/master/list/workbasket-list-toolbar/workbasket-list-toolbar.component'
|
||||
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
|
||||
import { WorkbasketInformationComponent } from './workbasket/details/information/workbasket-information.component';
|
||||
import { DistributionTargetsComponent } from './workbasket/details/distribution-targets/distribution-targets.component';
|
||||
import { DualListComponent } from './workbasket/details/distribution-targets/dual-list/dual-list.component';
|
||||
import { AccessItemsComponent } from './workbasket/details/access-items/access-items.component';
|
||||
import { NoAccessComponent } from './workbasket/details/noAccess/no-access.component';
|
||||
import { FilterComponent } from './components/filter/filter.component';
|
||||
import { IconTypeComponent } from './components/type-icon/icon-type.component';
|
||||
import { PaginationComponent } from './workbasket/master/list/pagination/pagination.component';
|
||||
import { ClassificationListComponent } from './classification/master/list/classification-list.component';
|
||||
import { ClassificationDetailsComponent } from './classification/details/classification-details.component';
|
||||
import { ImportExportComponent } from './components/import-export/import-export.component';
|
||||
import { ClassificationTypesSelectorComponent } from 'app/shared/classification-types-selector/classification-types-selector.component';
|
||||
import { SortComponent } from './components/sort/sort.component';
|
||||
|
||||
/**
|
||||
* Services
|
||||
*/
|
||||
import { WorkbasketService } from './services/workbasket/workbasket.service';
|
||||
import { SavingWorkbasketService } from './services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { ClassificationDefinitionService } from './services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from './services/workbasket-definition/workbasket-definition.service';
|
||||
import { ClassificationsService } from './services/classifications/classifications.service';
|
||||
import { ClassificationTypesService } from './services/classification-types/classification-types.service';
|
||||
import { ClassificationCategoriesService } from './services/classification-categories-service/classification-categories.service';
|
||||
|
||||
|
||||
const MODULES = [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
Ng2AutoCompleteModule,
|
||||
HttpClientModule,
|
||||
AngularSvgIconModule,
|
||||
AlertModule,
|
||||
SharedModule,
|
||||
AdministrationRoutingModule,
|
||||
];
|
||||
|
||||
const DECLARATIONS = [
|
||||
WorkbasketListComponent,
|
||||
WorkbasketListToolbarComponent,
|
||||
AccessItemsComponent,
|
||||
WorkbasketDetailsComponent,
|
||||
WorkbasketInformationComponent,
|
||||
NoAccessComponent,
|
||||
FilterComponent,
|
||||
IconTypeComponent,
|
||||
DistributionTargetsComponent,
|
||||
DualListComponent,
|
||||
PaginationComponent,
|
||||
ClassificationListComponent,
|
||||
ImportExportComponent,
|
||||
ClassificationTypesSelectorComponent,
|
||||
ClassificationDetailsComponent,
|
||||
SortComponent
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
declarations: DECLARATIONS,
|
||||
imports: MODULES,
|
||||
providers: [
|
||||
WorkbasketService,
|
||||
ClassificationDefinitionService,
|
||||
WorkbasketDefinitionService,
|
||||
SavingWorkbasketService,
|
||||
ClassificationsService,
|
||||
ClassificationTypesService,
|
||||
ClassificationCategoriesService,
|
||||
]
|
||||
})
|
||||
export class AdministrationModule {
|
||||
}
|
||||
// tslint:enable:max-line-length
|
|
@ -14,13 +14,15 @@ import { LinksClassification } from 'app/models/links-classfication';
|
|||
|
||||
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { ClassificationsService } from 'app/services/classifications/classifications.service';
|
||||
import { ClassificationsService } from 'app/administration/services/classifications/classifications.service';
|
||||
import { TreeNodeModel } from 'app/models/tree-node';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { TreeService } from 'app/services/tree/tree.service';
|
||||
import { ClassificationTypesService } from 'app/services/classification-types/classification-types.service';
|
||||
import { ClassificationCategoriesService } from 'app/services/classification-categories-service/classification-categories.service';
|
||||
import { ClassificationTypesService } from 'app/administration/services/classification-types/classification-types.service';
|
||||
// tslint:disable:max-line-length
|
||||
import { ClassificationCategoriesService } from 'app/administration/services/classification-categories-service/classification-categories.service';
|
||||
// tslint:enable:max-line-length
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
||||
|
@ -50,7 +52,7 @@ describe('ClassificationDetailsComponent', () => {
|
|||
imports: [FormsModule, HttpClientModule, RouterTestingModule.withRoutes(routes), AngularSvgIconModule],
|
||||
declarations: [ClassificationDetailsComponent, SpinnerComponent, DummyDetailComponent],
|
||||
providers: [MasterAndDetailService, RequestInProgressService, ClassificationsService, HttpClient, ErrorModalService, AlertService,
|
||||
TreeService, ClassificationTypesService, ClassificationCategoriesService, {
|
||||
TreeService, ClassificationTypesService, ClassificationCategoriesService, {
|
||||
provide: DomainService,
|
||||
useClass: DomainServiceMock
|
||||
}]
|
||||
|
|
|
@ -10,14 +10,16 @@ import { AlertModel, AlertType } from 'app/models/alert';
|
|||
|
||||
import { TaskanaDate } from 'app/shared/util/taskana.date';
|
||||
|
||||
import { ClassificationsService } from 'app/services/classifications/classifications.service';
|
||||
import { ClassificationsService } from 'app/administration/services/classifications/classifications.service';
|
||||
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { TreeService } from 'app/services/tree/tree.service';
|
||||
import { ClassificationTypesService } from 'app/services/classification-types/classification-types.service';
|
||||
import { ClassificationCategoriesService } from 'app/services/classification-categories-service/classification-categories.service';
|
||||
import { ClassificationTypesService } from 'app/administration/services/classification-types/classification-types.service';
|
||||
// tslint:disable:max-line-length
|
||||
import { ClassificationCategoriesService } from 'app/administration/services/classification-categories-service/classification-categories.service';
|
||||
// tslint:enable:max-line-length
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
||||
@Component({
|
||||
|
|
|
@ -8,18 +8,18 @@ import { RouterTestingModule } from '@angular/router/testing';
|
|||
import { TreeNodeModel } from 'app/models/tree-node';
|
||||
|
||||
import { ClassificationListComponent } from './classification-list.component';
|
||||
import { ImportExportComponent } from 'app/shared/import-export/import-export.component';
|
||||
import { ImportExportComponent } from 'app/administration/components/import-export/import-export.component';
|
||||
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
||||
import { ClassificationTypesSelectorComponent } from 'app/shared/classification-types-selector/classification-types-selector.component';
|
||||
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketDefinitionService } from 'app/services/workbasket-definition/workbasket-definition.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { WorkbasketDefinitionService } from 'app/administration/services/workbasket-definition/workbasket-definition.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ClassificationsService } from 'app/services/classifications/classifications.service';
|
||||
import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service';
|
||||
import { ClassificationsService } from 'app/administration/services/classifications/classifications.service';
|
||||
import { ClassificationDefinitionService } from 'app/administration/services/classification-definition/classification-definition.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { ClassificationTypesService } from 'app/services/classification-types/classification-types.service';
|
||||
import { ClassificationTypesService } from 'app/administration/services/classification-types/classification-types.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
@Component({
|
||||
|
|
|
@ -6,8 +6,8 @@ import { ImportType } from 'app/models/import-type';
|
|||
import { Classification } from 'app/models/classification';
|
||||
import { TreeNodeModel } from 'app/models/tree-node';
|
||||
|
||||
import { ClassificationsService } from 'app/services/classifications/classifications.service';
|
||||
import { ClassificationTypesService } from 'app/services/classification-types/classification-types.service';
|
||||
import { ClassificationsService } from 'app/administration/services/classifications/classifications.service';
|
||||
import { ClassificationTypesService } from 'app/administration/services/classification-types/classification-types.service';
|
||||
|
||||
@Component({
|
||||
selector: 'taskana-classification-list',
|
||||
|
|
|
@ -7,7 +7,7 @@ import { HttpModule } from '@angular/http';
|
|||
import { FilterModel } from 'app/models/filter';
|
||||
import { IconTypeComponent } from '../type-icon/icon-type.component';
|
||||
import { FilterComponent } from './filter.component';
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
|
||||
describe('FilterComponent', () => {
|
||||
let component: FilterComponent,
|
|
@ -2,13 +2,13 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing';
|
|||
|
||||
import {ImportExportComponent} from './import-export.component';
|
||||
import {WorkbasketService} from '../../services/workbasket/workbasket.service';
|
||||
import {ClassificationDefinitionService} from '../../services/classification-definition/classification-definition.service';
|
||||
import {ClassificationDefinitionService} from 'app/administration/services/classification-definition/classification-definition.service';
|
||||
import {WorkbasketDefinitionService} from '../../services/workbasket-definition/workbasket-definition.service';
|
||||
import {AlertService} from '../../services/alert/alert.service';
|
||||
import {AlertService} from 'app/services/alert/alert.service';
|
||||
import {HttpClientModule} from '@angular/common/http';
|
||||
import {DomainService} from 'app/services/domain/domain.service';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
import {ErrorModalService} from '../../services/errorModal/error-modal.service';
|
||||
import {ErrorModalService} from 'app/services/errorModal/error-modal.service';
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
|
||||
describe('ImportExportComponent', () => {
|
|
@ -1,6 +1,6 @@
|
|||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from 'app/services/workbasket-definition/workbasket-definition.service';
|
||||
import { ClassificationDefinitionService } from 'app/administration/services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from 'app/administration/services/workbasket-definition/workbasket-definition.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { ImportType } from 'app/models/import-type';
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
|
||||
import { SortComponent } from './sort.component';
|
||||
import { Direction } from 'app/models/sorting';
|
|
@ -1,11 +1,11 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {HttpClient, HttpHeaders} from '@angular/common/http';
|
||||
import {environment} from '../../../environments/environment';
|
||||
import {AlertService} from '../alert/alert.service';
|
||||
import {ClassificationDefinition} from '../../models/classification-definition';
|
||||
import {AlertModel, AlertType} from '../../models/alert';
|
||||
import {saveAs} from 'file-saver/FileSaver';
|
||||
import {TaskanaDate} from '../../shared/util/taskana.date';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
||||
import { environment } from 'app/../environments/environment';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ClassificationDefinition } from 'app/models/classification-definition';
|
||||
import { AlertModel, AlertType } from 'app/models/alert';
|
||||
import { saveAs } from 'file-saver/FileSaver';
|
||||
import { TaskanaDate } from 'app/shared/util/taskana.date';
|
||||
|
||||
@Injectable()
|
||||
export class ClassificationDefinitionService {
|
||||
|
@ -27,7 +27,7 @@ export class ClassificationDefinitionService {
|
|||
domain = (domain === '' ? '' : '?domain=' + domain);
|
||||
this.httpClient.get<ClassificationDefinition[]>(this.url + domain, this.httpOptions)
|
||||
.subscribe(
|
||||
response => saveAs(new Blob([JSON.stringify(response)], {type: 'text/plain;charset=utf-8'}),
|
||||
response => saveAs(new Blob([JSON.stringify(response)], { type: 'text/plain;charset=utf-8' }),
|
||||
'Classifications_' + TaskanaDate.getDate() + '.json')
|
||||
);
|
||||
}
|
||||
|
@ -37,8 +37,8 @@ export class ClassificationDefinitionService {
|
|||
importClassifications(classifications: any) {
|
||||
this.httpClient.post(this.url + '/import',
|
||||
JSON.parse(classifications), this.httpOptions).subscribe(
|
||||
classificationsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')),
|
||||
error => this.alertService.triggerAlert(new AlertModel(AlertType.DANGER, 'Import was not successful'))
|
||||
);
|
||||
classificationsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')),
|
||||
error => this.alertService.triggerAlert(new AlertModel(AlertType.DANGER, 'Import was not successful'))
|
||||
);
|
||||
}
|
||||
}
|
|
@ -11,9 +11,9 @@ import { Classification } from 'app/models/classification';
|
|||
import { TreeNodeModel } from 'app/models/tree-node';
|
||||
import { ClassificationDefinition } from 'app/models/classification-definition';
|
||||
|
||||
import { ClassificationResource } from '../../models/classification-resource';
|
||||
import { ClassificationResource } from 'app/models/classification-resource';
|
||||
import { ClassificationTypesService } from '../classification-types/classification-types.service';
|
||||
import { DomainService } from '../domain/domain.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
||||
@Injectable()
|
||||
export class ClassificationsService {
|
|
@ -1,13 +1,13 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {HttpClient, HttpHeaders} from '@angular/common/http';
|
||||
import {environment} from '../../../environments/environment';
|
||||
import {environment} from 'app/../environments/environment';
|
||||
import {saveAs} from 'file-saver/FileSaver';
|
||||
import {AlertService} from '../alert/alert.service';
|
||||
import {WorkbasketDefinition} from '../../models/workbasket-definition';
|
||||
import {AlertModel, AlertType} from '../../models/alert';
|
||||
import {TaskanaDate} from '../../shared/util/taskana.date';
|
||||
import {ErrorModel} from '../../models/modal-error';
|
||||
import {ErrorModalService} from '../errorModal/error-modal.service';
|
||||
import {AlertService} from 'app/services/alert/alert.service';
|
||||
import {WorkbasketDefinition} from 'app/models/workbasket-definition';
|
||||
import {AlertModel, AlertType} from 'app/models/alert';
|
||||
import {TaskanaDate} from 'app/shared/util/taskana.date';
|
||||
import {ErrorModel} from 'app/models/modal-error';
|
||||
import {ErrorModalService} from 'app/services/errorModal/error-modal.service';
|
||||
|
||||
|
||||
@Injectable()
|
|
@ -11,7 +11,7 @@ import { WorkbasketDistributionTargetsResource } from 'app/models/workbasket-dis
|
|||
import { Direction } from 'app/models/sorting';
|
||||
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { RequestInProgressService } from '../requestInProgress/request-in-progress.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
@Injectable()
|
||||
export class WorkbasketService {
|
|
@ -18,8 +18,8 @@ import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
|||
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
|
||||
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
|
|
@ -8,9 +8,9 @@ import { ErrorModel } from 'app/models/modal-error';
|
|||
import { ACTION } from 'app/models/action';
|
||||
import { AlertModel, AlertType } from 'app/models/alert';
|
||||
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
|
|
|
@ -13,19 +13,19 @@ import { FilterModel } from 'app/models/filter';
|
|||
import { Workbasket } from 'app/models/workbasket';
|
||||
import { WorkbasketDistributionTargetsResource } from 'app/models/workbasket-distribution-targets-resource';
|
||||
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
import { DualListComponent } from './dual-list/dual-list.component';
|
||||
import { DistributionTargetsComponent, Side } from './distribution-targets.component';
|
||||
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
||||
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { SelectWorkBasketPipe } from 'app/pipes/selectedWorkbasket/seleted-workbasket.pipe';
|
||||
import { LinksWorkbasketSummary } from '../../../../models/links-workbasket-summary';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { SelectWorkBasketPipe } from 'app/shared/pipes/selectedWorkbasket/seleted-workbasket.pipe';
|
||||
import { LinksWorkbasketSummary } from 'app/models/links-workbasket-summary';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
|
||||
|
|
|
@ -10,9 +10,9 @@ import { ErrorModel } from 'app/models/modal-error';
|
|||
import { ACTION } from 'app/models/action';
|
||||
import { AlertModel, AlertType } from 'app/models/alert';
|
||||
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { WorkbasketInformationComponent } from './workbasket-information.component';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
|
@ -15,14 +15,14 @@ import { ICONTYPES } from 'app/models/type';
|
|||
import { ACTION } from 'app/models/action';
|
||||
import { Links } from 'app/models/links';
|
||||
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
||||
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
import { RemoveNoneTypePipe } from 'app/shared/pipes/removeNoneType/remove-none-type.pipe';
|
||||
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
|
|
@ -3,7 +3,7 @@ import { FormGroup } from '@angular/forms';
|
|||
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { ICONTYPES } from 'app/models/type';
|
||||
import { ErrorModel } from 'app/models/modal-error';
|
||||
import { ACTION } from 'app/models/action';
|
||||
|
@ -13,8 +13,8 @@ import { TaskanaDate } from 'app/shared/util/taskana.date';
|
|||
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { SavingWorkbasketService, SavingInformation } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
|
||||
@Component({
|
||||
|
|
|
@ -18,11 +18,11 @@ import { Links } from 'app/models/links';
|
|||
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
|
||||
import { LinksWorkbasketSummary } from 'app/models/links-workbasket-summary';
|
||||
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service';
|
||||
import { PermissionService } from 'app/services/permission/permission.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { SavingWorkbasketService } from 'app/services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { SavingWorkbasketService } from 'app/administration/services/saving-workbaskets/saving-workbaskets.service';
|
||||
|
||||
import { WorkbasketDetailsComponent } from './workbasket-details.component';
|
||||
import { NoAccessComponent } from './noAccess/no-access.component';
|
||||
|
@ -31,12 +31,12 @@ import { AccessItemsComponent } from './access-items/access-items.component';
|
|||
import { DistributionTargetsComponent } from './distribution-targets/distribution-targets.component';
|
||||
import { DualListComponent } from './distribution-targets//dual-list/dual-list.component';
|
||||
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { AlertComponent } from 'app/shared/alert/alert.component';
|
||||
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { SelectWorkBasketPipe } from 'app/pipes/selectedWorkbasket/seleted-workbasket.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
import { RemoveNoneTypePipe } from 'app/shared/pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { SelectWorkBasketPipe } from 'app/shared/pipes/selectedWorkbasket/seleted-workbasket.pipe';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
|
|
@ -10,7 +10,7 @@ import { ErrorModel } from 'app/models/modal-error';
|
|||
import { ACTION } from 'app/models/action';
|
||||
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service'
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service'
|
||||
import { PermissionService } from 'app/services/permission/permission.service';
|
||||
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service'
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { PaginationComponent } from './pagination.component';
|
||||
import { SpreadNumberPipe } from 'app/pipes/spreadNumber/spread-number';
|
||||
import { SpreadNumberPipe } from 'app/shared/pipes/spreadNumber/spread-number';
|
||||
import { WorkbasketSummaryResource } from '../../../../../models/workbasket-summary-resource';
|
||||
import { Page } from '../../../../../models/page';
|
||||
|
||||
|
|
|
@ -14,20 +14,20 @@ import { Links } from 'app/models/links';
|
|||
import { FilterModel } from 'app/models/filter';
|
||||
import { SortingModel } from 'app/models/sorting';
|
||||
|
||||
import { SortComponent } from 'app/shared/sort/sort.component';
|
||||
import { FilterComponent } from 'app/shared/filter/filter.component';
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { SortComponent } from 'app/administration/components/sort/sort.component';
|
||||
import { FilterComponent } from 'app/administration/components/filter/filter.component';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar.component';
|
||||
import { ImportExportComponent } from 'app/shared/import-export/import-export.component';
|
||||
import { ImportExportComponent } from 'app/administration/components/import-export/import-export.component';
|
||||
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from 'app/services/workbasket-definition/workbasket-definition.service';
|
||||
import { ClassificationDefinitionService } from 'app/administration/services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from 'app/administration/services/workbasket-definition/workbasket-definition.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { AlertModel, AlertType } from 'app/models/alert';
|
|||
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { ImportType } from 'app/models/import-type';
|
||||
|
||||
|
|
|
@ -16,20 +16,20 @@ import { LinksWorkbasketSummary } from 'app/models/links-workbasket-summary';
|
|||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service';
|
||||
import { OrientationService } from 'app/services/orientation/orientation.service';
|
||||
|
||||
import { WorkbasketListComponent } from './workbasket-list.component';
|
||||
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar/workbasket-list-toolbar.component';
|
||||
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
|
||||
import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component';
|
||||
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
|
||||
import { SortComponent } from 'app/shared/sort/sort.component';
|
||||
import { ImportExportComponent } from 'app/shared/import-export/import-export.component';
|
||||
import { SortComponent } from 'app/administration/components/sort/sort.component';
|
||||
import { ImportExportComponent } from 'app/administration/components/import-export/import-export.component';
|
||||
|
||||
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
|
||||
import { WorkbasketDefinitionService } from 'app/services/workbasket-definition/workbasket-definition.service';
|
||||
import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service';
|
||||
import { RemoveNoneTypePipe } from 'app/shared/pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe';
|
||||
import { WorkbasketDefinitionService } from 'app/administration/services/workbasket-definition/workbasket-definition.service';
|
||||
import { ClassificationDefinitionService } from 'app/administration/services/classification-definition/classification-definition.service';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { FilterModel } from 'app/models/filter'
|
|||
import { SortingModel } from 'app/models/sorting';
|
||||
import { Orientation } from 'app/models/orientation';
|
||||
|
||||
import { WorkbasketService } from 'app/services/workbasket/workbasket.service'
|
||||
import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service'
|
||||
import { OrientationService } from 'app/services/orientation/orientation.service';
|
||||
|
||||
@Component({
|
||||
|
|
|
@ -2,68 +2,30 @@ import { NgModule } from '@angular/core';
|
|||
import { RouterModule, Routes } from '@angular/router';
|
||||
|
||||
import { AppComponent } from './app.component';
|
||||
import { WorkbasketListComponent } from './administration/workbasket/master/list/workbasket-list.component';
|
||||
import { WorkbasketDetailsComponent } from './administration/workbasket/details/workbasket-details.component';
|
||||
import { MasterAndDetailComponent } from './shared/master-and-detail/master-and-detail.component';
|
||||
import { NoAccessComponent } from './administration/workbasket/details/noAccess/no-access.component';
|
||||
import { ClassificationListComponent } from './administration/classification/master/list/classification-list.component';
|
||||
import { ClassificationDetailsComponent } from 'app/administration/classification/details/classification-details.component';
|
||||
import { DomainGuard } from 'app/guards/domain-guard';
|
||||
|
||||
const appRoutes: Routes = [
|
||||
{
|
||||
path: 'administration/workbaskets',
|
||||
component: MasterAndDetailComponent,
|
||||
canActivate: [DomainGuard],
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: WorkbasketListComponent,
|
||||
outlet: 'master'
|
||||
},
|
||||
{
|
||||
path: 'noaccess',
|
||||
component: NoAccessComponent,
|
||||
outlet: 'detail'
|
||||
},
|
||||
{
|
||||
path: 'new-classification/:id',
|
||||
component: WorkbasketDetailsComponent,
|
||||
outlet: 'detail'
|
||||
},
|
||||
{
|
||||
path: ':id',
|
||||
component: WorkbasketDetailsComponent,
|
||||
outlet: 'detail'
|
||||
}
|
||||
]
|
||||
path: 'administration',
|
||||
loadChildren: './administration/administration.module#AdministrationModule',
|
||||
},
|
||||
{
|
||||
path: 'administration/classifications',
|
||||
component: MasterAndDetailComponent,
|
||||
canActivate: [DomainGuard],
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: ClassificationListComponent,
|
||||
outlet: 'master'
|
||||
},
|
||||
{
|
||||
path: ':id',
|
||||
component: ClassificationDetailsComponent,
|
||||
outlet: 'detail'
|
||||
}
|
||||
]
|
||||
path: 'monitor',
|
||||
loadChildren: './monitor/monitor.module#MonitorModule',
|
||||
},
|
||||
{
|
||||
path: 'workplace',
|
||||
loadChildren: './workplace/workplace.module#WorkplaceModule'
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
redirectTo: 'administration/workbaskets',
|
||||
redirectTo: 'workplace',
|
||||
pathMatch: 'full'
|
||||
},
|
||||
{
|
||||
path: 'administration',
|
||||
redirectTo: 'administration/workbaskets',
|
||||
}
|
||||
|
||||
];
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
|
|
@ -4,6 +4,7 @@ import { AppComponent } from './app.component';
|
|||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { SharedModule } from 'app/shared/shared.module';
|
||||
|
||||
import { ErrorModalService } from './services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from './services/requestInProgress/request-in-progress.service';
|
||||
|
@ -11,10 +12,7 @@ import { AlertService } from './services/alert/alert.service';
|
|||
import { OrientationService } from './services/orientation/orientation.service';
|
||||
import { SelectedRouteService } from './services/selected-route/selected-route';
|
||||
|
||||
import { GeneralMessageModalComponent } from './shared/general-message-modal/general-message-modal.component'
|
||||
import { SpinnerComponent } from './shared/spinner/spinner.component'
|
||||
import { AlertComponent } from './shared/alert/alert.component';
|
||||
import { NavBarComponent } from './shared/nav-bar/nav-bar.component';
|
||||
import { NavBarComponent } from './components/nav-bar/nav-bar.component';
|
||||
import { DomainServiceMock } from 'app/services/domain/domain.service.mock';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
|
||||
|
@ -30,12 +28,13 @@ describe('AppComponent', () => {
|
|||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [
|
||||
AppComponent, GeneralMessageModalComponent, SpinnerComponent, AlertComponent, NavBarComponent
|
||||
AppComponent, NavBarComponent
|
||||
],
|
||||
imports: [
|
||||
AngularSvgIconModule,
|
||||
RouterTestingModule.withRoutes(routes),
|
||||
HttpClientModule
|
||||
HttpClientModule,
|
||||
SharedModule
|
||||
],
|
||||
providers: [ErrorModalService, RequestInProgressService, AlertService, OrientationService, SelectedRouteService,
|
||||
{
|
||||
|
|
|
@ -10,112 +10,58 @@ import { AppRoutingModule } from './app-routing.module';
|
|||
import { AlertModule } from 'ngx-bootstrap';
|
||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
import { TabsModule } from 'ngx-bootstrap/tabs';
|
||||
import { TreeModule } from 'angular-tree-component';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
/**
|
||||
* Components
|
||||
*/
|
||||
import { AppComponent } from './app.component';
|
||||
import { WorkbasketListComponent } from './administration/workbasket/master/list/workbasket-list.component';
|
||||
import { WorkbasketListToolbarComponent } from './administration/workbasket/master/list/workbasket-list-toolbar/workbasket-list-toolbar.component'
|
||||
import { WorkbasketDetailsComponent } from './administration/workbasket/details/workbasket-details.component';
|
||||
import { WorkbasketInformationComponent } from './administration/workbasket/details/information/workbasket-information.component';
|
||||
import { DistributionTargetsComponent } from './administration/workbasket/details/distribution-targets/distribution-targets.component';
|
||||
import { DualListComponent } from './administration/workbasket/details/distribution-targets/dual-list/dual-list.component';
|
||||
import { AccessItemsComponent } from './administration/workbasket/details/access-items/access-items.component';
|
||||
import { NoAccessComponent } from './administration/workbasket/details/noAccess/no-access.component';
|
||||
import { SpinnerComponent } from './shared/spinner/spinner.component';
|
||||
import { FilterComponent } from './shared/filter/filter.component';
|
||||
import { IconTypeComponent } from './shared/type-icon/icon-type.component';
|
||||
import { AlertComponent } from './shared/alert/alert.component';
|
||||
import { SortComponent } from './shared/sort/sort.component';
|
||||
import { GeneralMessageModalComponent } from './shared/general-message-modal/general-message-modal.component';
|
||||
import { PaginationComponent } from './administration/workbasket/master/list/pagination/pagination.component';
|
||||
import { ClassificationListComponent } from './administration/classification/master/list/classification-list.component';
|
||||
import { ClassificationDetailsComponent } from './administration/classification/details/classification-details.component';
|
||||
import { ImportExportComponent } from './shared/import-export/import-export.component';
|
||||
import { MasterAndDetailComponent } from './shared/master-and-detail/master-and-detail.component';
|
||||
import { ClassificationTypesSelectorComponent } from './shared/classification-types-selector/classification-types-selector.component';
|
||||
import { TaskanaTreeComponent } from './shared/tree/tree.component';
|
||||
import { NavBarComponent } from './shared/nav-bar/nav-bar.component';
|
||||
import { TreeModule } from 'angular-tree-component';
|
||||
import { SharedModule } from 'app/shared/shared.module';
|
||||
|
||||
|
||||
/**
|
||||
* Services
|
||||
*/
|
||||
import { WorkbasketService } from './services/workbasket/workbasket.service';
|
||||
import { MasterAndDetailService } from './services/masterAndDetail/master-and-detail.service';
|
||||
import { HttpClientInterceptor } from './services/httpClientInterceptor/http-client-interceptor.service';
|
||||
import { PermissionService } from './services/permission/permission.service';
|
||||
import { AlertService } from './services/alert/alert.service';
|
||||
import { ErrorModalService } from './services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from './services/requestInProgress/request-in-progress.service';
|
||||
import { SavingWorkbasketService } from './services/saving-workbaskets/saving-workbaskets.service';
|
||||
import { OrientationService } from './services/orientation/orientation.service';
|
||||
import { ClassificationDefinitionService } from './services/classification-definition/classification-definition.service';
|
||||
import { WorkbasketDefinitionService } from './services/workbasket-definition/workbasket-definition.service';
|
||||
import { SelectedRouteService } from './services/selected-route/selected-route';
|
||||
import { ClassificationsService } from './services/classifications/classifications.service';
|
||||
import { TreeService } from './services/tree/tree.service';
|
||||
import { ClassificationTypesService } from './services/classification-types/classification-types.service';
|
||||
import { ClassificationCategoriesService } from 'app/services/classification-categories-service/classification-categories.service';
|
||||
|
||||
import { HttpClientInterceptor } from 'app/services/httpClientInterceptor/http-client-interceptor.service';
|
||||
import { PermissionService } from 'app/services/permission/permission.service';
|
||||
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
|
||||
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
|
||||
import { OrientationService } from 'app/services/orientation/orientation.service';
|
||||
import { SelectedRouteService } from 'app/services/selected-route/selected-route';
|
||||
import { DomainService } from 'app/services/domain/domain.service';
|
||||
import { StartupService } from 'app/services/startup-service/startup.service';
|
||||
import { AlertService } from 'app/services/alert/alert.service';
|
||||
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service';
|
||||
import { TreeService } from 'app/services/tree/tree.service';
|
||||
|
||||
|
||||
/**
|
||||
* Pipes
|
||||
* Components
|
||||
*/
|
||||
import { MapValuesPipe } from './pipes/mapValues/map-values.pipe';
|
||||
import { RemoveNoneTypePipe } from './pipes/removeNoneType/remove-none-type.pipe';
|
||||
import { SelectWorkBasketPipe } from './pipes/selectedWorkbasket/seleted-workbasket.pipe';
|
||||
import { SpreadNumberPipe } from './pipes/spreadNumber/spread-number';
|
||||
import { DomainService } from './services/domain/domain.service';
|
||||
import { AppComponent } from './app.component';
|
||||
import { NavBarComponent } from 'app/components/nav-bar/nav-bar.component';
|
||||
|
||||
|
||||
/**
|
||||
* Guards
|
||||
*/
|
||||
import { DomainGuard } from './guards/domain-guard';
|
||||
|
||||
|
||||
const MODULES = [
|
||||
BrowserModule,
|
||||
FormsModule,
|
||||
TabsModule.forRoot(),
|
||||
TreeModule,
|
||||
AppRoutingModule,
|
||||
AlertModule.forRoot(),
|
||||
AngularSvgIconModule,
|
||||
HttpClientModule,
|
||||
BrowserAnimationsModule,
|
||||
ReactiveFormsModule
|
||||
ReactiveFormsModule,
|
||||
TreeModule,
|
||||
SharedModule
|
||||
];
|
||||
|
||||
const DECLARATIONS = [
|
||||
AppComponent,
|
||||
WorkbasketListComponent,
|
||||
WorkbasketListToolbarComponent,
|
||||
AccessItemsComponent,
|
||||
WorkbasketDetailsComponent,
|
||||
MasterAndDetailComponent,
|
||||
WorkbasketInformationComponent,
|
||||
NoAccessComponent,
|
||||
SpinnerComponent,
|
||||
FilterComponent,
|
||||
IconTypeComponent,
|
||||
AlertComponent,
|
||||
GeneralMessageModalComponent,
|
||||
DistributionTargetsComponent,
|
||||
SortComponent,
|
||||
DualListComponent,
|
||||
PaginationComponent,
|
||||
ClassificationListComponent,
|
||||
ImportExportComponent,
|
||||
TaskanaTreeComponent,
|
||||
ClassificationTypesSelectorComponent,
|
||||
ClassificationDetailsComponent,
|
||||
NavBarComponent,
|
||||
MapValuesPipe,
|
||||
RemoveNoneTypePipe,
|
||||
SelectWorkBasketPipe,
|
||||
SpreadNumberPipe
|
||||
NavBarComponent
|
||||
];
|
||||
|
||||
export function startupServiceFactory(startupService: StartupService): Function {
|
||||
|
@ -126,27 +72,16 @@ export function startupServiceFactory(startupService: StartupService): Function
|
|||
declarations: DECLARATIONS,
|
||||
imports: MODULES,
|
||||
providers: [
|
||||
WorkbasketService,
|
||||
MasterAndDetailService,
|
||||
PermissionService,
|
||||
ClassificationDefinitionService,
|
||||
WorkbasketDefinitionService,
|
||||
DomainService,
|
||||
{
|
||||
provide: HTTP_INTERCEPTORS,
|
||||
useClass: HttpClientInterceptor,
|
||||
multi: true
|
||||
},
|
||||
AlertService,
|
||||
ErrorModalService,
|
||||
RequestInProgressService,
|
||||
SavingWorkbasketService,
|
||||
OrientationService,
|
||||
SelectedRouteService,
|
||||
ClassificationsService,
|
||||
TreeService,
|
||||
ClassificationTypesService,
|
||||
ClassificationCategoriesService,
|
||||
DomainGuard,
|
||||
StartupService,
|
||||
{
|
||||
|
@ -154,7 +89,11 @@ export function startupServiceFactory(startupService: StartupService): Function
|
|||
useFactory: startupServiceFactory,
|
||||
deps: [StartupService],
|
||||
multi: true
|
||||
}
|
||||
},
|
||||
AlertService,
|
||||
PermissionService,
|
||||
MasterAndDetailService,
|
||||
TreeService
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</p>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pull-right domain-form">
|
||||
<div *ngIf="selectedRoute.indexOf('workbaskets') !== -1 || selectedRoute.indexOf('classifications') !== -1"class="pull-right domain-form">
|
||||
<div class="dropdown clearfix btn-group">
|
||||
<label class="control-label hidden-xs">Working on </label>
|
||||
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
||||
|
@ -41,30 +41,26 @@
|
|||
<a [href]="adminUrl">{{title}}</a>
|
||||
</p>
|
||||
<button type="button" *ngIf="showNavbar" class="btn btn-default navbar-toggle show pull-right" (click)="toogleNavBar();"
|
||||
aria-expanded="true" aria-controls="navbar">
|
||||
<span class="glyphicon glyphicon-arrow-left white"></span>
|
||||
</button>
|
||||
aria-expanded="true" aria-controls="navbar">
|
||||
<span class="glyphicon glyphicon-arrow-left white"></span>
|
||||
</button>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="nav-content">
|
||||
<div class="row menu">
|
||||
<span routerLink="administration/workbaskets" aria-controls="administration" routerLinkActive="active">Administration</span>
|
||||
<div class="row submenu" [ngClass]="{'selected': (selectedRoute.indexOf('workbaskets') !== -1 || selectedRoute === '')}">
|
||||
<div class="row submenu" [ngClass]="{'selected': selectedRoute.indexOf('workbaskets') !== -1 }">
|
||||
<span class="col-xs-6" routerLink="administration/workbaskets" aria-controls="Workbaskets" routerLinkActive="active">Workbaskets</span>
|
||||
</div>
|
||||
<div class="row submenu" [ngClass]="{'selected': selectedRoute.indexOf('classifications') !== -1}">
|
||||
<span class="col-xs-6" routerLink="administration/classifications" aria-controls="Classifications" routerLinkActive="active">Classifications</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row menu">
|
||||
<span>
|
||||
<a [href]="monitorUrl"> Monitor</a>
|
||||
</span>
|
||||
<div class="row menu" [ngClass]="{'selected': selectedRoute.indexOf('monitor') !== -1}">
|
||||
<span routerLink="{{monitorUrl}}" aria-controls="Monitor" routerLinkActive="active">Monitor</span>
|
||||
</div>
|
||||
<div class="row menu">
|
||||
<span>
|
||||
<a [href]="workplaceUrl"> Workplace</a>
|
||||
</span>
|
||||
<div class="row menu" [ngClass]="{'selected': selectedRoute.indexOf('workplace') !== -1 || selectedRoute === ''}">
|
||||
<span routerLink="{{workplaceUrl}}" aria-controls="Workplace" routerLinkActive="active">Workplace</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -26,14 +26,17 @@ export class NavBarComponent implements OnInit, OnDestroy {
|
|||
|
||||
selectedRoute = '';
|
||||
route: string;
|
||||
titleAdministration = 'Taskana administration';
|
||||
titleMonitor = 'Taskana monitor';
|
||||
titleWorkplace = 'Taskana workplace';
|
||||
title = 'Taskana administration';
|
||||
showNavbar = false;
|
||||
domains: Array<string> = [];
|
||||
selectedDomain: string;
|
||||
|
||||
adminUrl: string = environment.taskanaAdminUrl;
|
||||
monitorUrl: string = environment.taskanaMonitorUrl;
|
||||
workplaceUrl: string = environment.taskanaWorkplaceUrl;
|
||||
adminUrl = './administration';
|
||||
monitorUrl = './monitor';
|
||||
workplaceUrl = './workplace';
|
||||
|
||||
selectedRouteSubscription: Subscription;
|
||||
|
||||
|
@ -44,6 +47,7 @@ export class NavBarComponent implements OnInit, OnDestroy {
|
|||
ngOnInit() {
|
||||
this.selectedRouteSubscription = this.selectedRouteService.getSelectedRoute().subscribe((value: string) => {
|
||||
this.selectedRoute = value;
|
||||
this.setTitle(value);
|
||||
});
|
||||
this.domainService.getDomains().subscribe(domains => {
|
||||
this.domains = domains;
|
||||
|
@ -61,6 +65,15 @@ export class NavBarComponent implements OnInit, OnDestroy {
|
|||
toogleNavBar() {
|
||||
this.showNavbar = !this.showNavbar;
|
||||
}
|
||||
private setTitle(value: string = 'workbaskets') {
|
||||
if (value.indexOf('workbaskets') === 0 || value.indexOf('classifications') === 0) {
|
||||
this.title = this.titleAdministration;
|
||||
} else if (value.indexOf('monitor') === 0) {
|
||||
this.title = this.titleMonitor;
|
||||
} else if (value.indexOf('workplace') === 0) {
|
||||
this.title = this.titleWorkplace;
|
||||
}
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
if (this.selectedRouteSubscription) { this.selectedRouteSubscription.unsubscribe(); }
|
|
@ -1,4 +1,4 @@
|
|||
export class State {
|
||||
state: string;
|
||||
counter: number;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
export class WorkbasketCounterData {
|
||||
data: Array<number>;
|
||||
label: string;
|
||||
}
|
||||
}
|
|
@ -3,4 +3,4 @@ import { WorkbasketCounterData } from './workbasket-counter-data';
|
|||
export class WorkbasketCounter {
|
||||
dates: Array<string>[];
|
||||
data: Array<WorkbasketCounterData>;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { MonitorComponent } from './monitor.component'
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: MonitorComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class MonitorRoutingModule { }
|
|
@ -0,0 +1,10 @@
|
|||
<div class="container">
|
||||
<tabset #staticTabs>
|
||||
<tab heading="Tasks">
|
||||
<taskana-tasks></taskana-tasks>
|
||||
</tab>
|
||||
<tab heading="Workbaskets">
|
||||
<taskana-workbasket></taskana-workbasket>
|
||||
</tab>
|
||||
</tabset>
|
||||
</div>
|
|
@ -0,0 +1,15 @@
|
|||
import { Component, OnInit, HostListener, OnDestroy } from '@angular/core';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'taskana-monitor',
|
||||
templateUrl: './monitor.component.html',
|
||||
styleUrls: ['./monitor.component.scss']
|
||||
})
|
||||
export class MonitorComponent implements OnInit, OnDestroy {
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
ngOnDestroy(): void {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
import { CommonModule } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { HttpModule } from '@angular/http';
|
||||
import { AlertModule } from 'ngx-bootstrap';
|
||||
import { ChartsModule } from 'ng2-charts';
|
||||
import { TabsModule } from 'ngx-bootstrap/tabs';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||
import { MonitorRoutingModule } from './monitor-routing.module';
|
||||
import { SharedModule } from 'app/shared/shared.module';
|
||||
|
||||
import { TasksComponent } from './tasks/tasks.component';
|
||||
import { WorkbasketComponent } from './workbasket/workbasket.component';
|
||||
import { ReportComponent } from './report/report.component';
|
||||
import { MonitorComponent } from './monitor.component';
|
||||
|
||||
import { RestConnectorService } from './services/restConnector/rest-connector.service';
|
||||
|
||||
const MODULES = [
|
||||
CommonModule,
|
||||
MonitorRoutingModule,
|
||||
FormsModule,
|
||||
HttpModule,
|
||||
AlertModule.forRoot(),
|
||||
ChartsModule,
|
||||
TabsModule.forRoot(),
|
||||
HttpClientModule,
|
||||
AngularSvgIconModule,
|
||||
SharedModule
|
||||
]
|
||||
const DECLARATIONS = [
|
||||
TasksComponent,
|
||||
WorkbasketComponent,
|
||||
ReportComponent,
|
||||
MonitorComponent
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
declarations: DECLARATIONS,
|
||||
imports: MODULES,
|
||||
providers: [RestConnectorService]
|
||||
})
|
||||
export class MonitorModule {
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
import { Component, Input, OnInit } from "@angular/core";
|
||||
import { RestConnectorService } from "../service/rest-connector.service";
|
||||
import { error } from "util";
|
||||
import { ReportType } from "./reportType";
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { RestConnectorService } from 'app/monitor/services/restConnector/rest-connector.service';
|
||||
import { error } from 'util';
|
||||
import { ReportType } from './reportType';
|
||||
|
||||
@Component({
|
||||
selector: 'report',
|
||||
selector: 'taskana-report',
|
||||
templateUrl: './report.component.html'
|
||||
})
|
||||
export class Report implements OnInit {
|
||||
export class ReportComponent implements OnInit {
|
||||
|
||||
@Input()
|
||||
type: ReportType;
|
||||
|
@ -23,7 +23,7 @@ export class Report implements OnInit {
|
|||
sumRow: Object;
|
||||
|
||||
|
||||
private isDataAvailable: boolean = false;
|
||||
isDataAvailable = false;
|
||||
|
||||
constructor(private restConnector: RestConnectorService) {
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ export class Report implements OnInit {
|
|||
});
|
||||
break;
|
||||
default:
|
||||
error("unknown ReportType '" + this.type + "'");
|
||||
error(`unknown ReportType ${this.type}`);
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue