* TspInfo module added
This commit is contained in:
parent
c61d1c8f13
commit
7e82c57b0e
@ -4,6 +4,7 @@ import { NgModule } from '@angular/core';
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
import { AppComponent } from './app.component';
|
||||
import { KanbanModule } from './kanban/kanban.module';
|
||||
import { TspInfoModule } from "./tsp-info/tsp-info.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
@ -12,7 +13,8 @@ import { KanbanModule } from './kanban/kanban.module';
|
||||
imports: [
|
||||
BrowserModule,
|
||||
AppRoutingModule,
|
||||
KanbanModule
|
||||
KanbanModule,
|
||||
TspInfoModule
|
||||
],
|
||||
providers: [],
|
||||
bootstrap: [AppComponent]
|
||||
|
||||
0
src/app/tsp-info/animgif/animgif.component.css
Normal file
0
src/app/tsp-info/animgif/animgif.component.css
Normal file
3
src/app/tsp-info/animgif/animgif.component.html
Normal file
3
src/app/tsp-info/animgif/animgif.component.html
Normal file
@ -0,0 +1,3 @@
|
||||
<p>
|
||||
animgif works!
|
||||
</p>
|
||||
25
src/app/tsp-info/animgif/animgif.component.spec.ts
Normal file
25
src/app/tsp-info/animgif/animgif.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AnimgifComponent } from './animgif.component';
|
||||
|
||||
describe('AnimgifComponent', () => {
|
||||
let component: AnimgifComponent;
|
||||
let fixture: ComponentFixture<AnimgifComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ AnimgifComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(AnimgifComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
21
src/app/tsp-info/animgif/animgif.component.ts
Normal file
21
src/app/tsp-info/animgif/animgif.component.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import {InfoBoxComponent} from "../info-box/info-box.component";
|
||||
|
||||
@Component({
|
||||
selector: 'app-animgif',
|
||||
templateUrl: './animgif.component.html',
|
||||
styleUrls: [
|
||||
'../info-box/info-box.component.css',
|
||||
'./animgif.component.css'
|
||||
]
|
||||
})
|
||||
export class AnimgifComponent extends InfoBoxComponent implements OnInit {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
||||
0
src/app/tsp-info/expedites/expedites.component.css
Normal file
0
src/app/tsp-info/expedites/expedites.component.css
Normal file
4
src/app/tsp-info/expedites/expedites.component.html
Normal file
4
src/app/tsp-info/expedites/expedites.component.html
Normal file
@ -0,0 +1,4 @@
|
||||
<h1>{{title}}</h1>
|
||||
<h2>{{data.all}}</h2>
|
||||
<h3>{{data.unassigned}}</h3>
|
||||
<p>unassigned</p>
|
||||
25
src/app/tsp-info/expedites/expedites.component.spec.ts
Normal file
25
src/app/tsp-info/expedites/expedites.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ExpeditesComponent } from './expedites.component';
|
||||
|
||||
describe('ExpeditesComponent', () => {
|
||||
let component: ExpeditesComponent;
|
||||
let fixture: ComponentFixture<ExpeditesComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ ExpeditesComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(ExpeditesComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
23
src/app/tsp-info/expedites/expedites.component.ts
Normal file
23
src/app/tsp-info/expedites/expedites.component.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {InfoBoxComponent} from "../info-box/info-box.component";
|
||||
import {ExpediteInfo} from "../shared/expedite-info.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-expedites',
|
||||
templateUrl: './expedites.component.html',
|
||||
styleUrls: [
|
||||
'../info-box/info-box.component.css',
|
||||
'./expedites.component.css'
|
||||
]
|
||||
})
|
||||
export class ExpeditesComponent extends InfoBoxComponent implements OnInit {
|
||||
|
||||
@Input() data: ExpediteInfo;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {}
|
||||
|
||||
}
|
||||
5
src/app/tsp-info/info-box/info-box.component.css
Normal file
5
src/app/tsp-info/info-box/info-box.component.css
Normal file
@ -0,0 +1,5 @@
|
||||
:host {
|
||||
display: inline-block;
|
||||
padding: 1.25em;
|
||||
background-color: #0E566C;
|
||||
}
|
||||
3
src/app/tsp-info/info-box/info-box.component.html
Normal file
3
src/app/tsp-info/info-box/info-box.component.html
Normal file
@ -0,0 +1,3 @@
|
||||
<p>
|
||||
info-box works!
|
||||
</p>
|
||||
25
src/app/tsp-info/info-box/info-box.component.spec.ts
Normal file
25
src/app/tsp-info/info-box/info-box.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { InfoBoxComponent } from './info-box.component';
|
||||
|
||||
describe('InfoBoxComponent', () => {
|
||||
let component: InfoBoxComponent;
|
||||
let fixture: ComponentFixture<InfoBoxComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ InfoBoxComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(InfoBoxComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
18
src/app/tsp-info/info-box/info-box.component.ts
Normal file
18
src/app/tsp-info/info-box/info-box.component.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-info-box',
|
||||
templateUrl: './info-box.component.html',
|
||||
styleUrls: ['./info-box.component.css']
|
||||
})
|
||||
export class InfoBoxComponent implements OnInit {
|
||||
|
||||
@Input() title = '';
|
||||
@Input() data: any;
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
||||
0
src/app/tsp-info/info-page/info-page.component.css
Normal file
0
src/app/tsp-info/info-page/info-page.component.css
Normal file
17
src/app/tsp-info/info-page/info-page.component.html
Normal file
17
src/app/tsp-info/info-page/info-page.component.html
Normal file
@ -0,0 +1,17 @@
|
||||
<p>
|
||||
<app-tr-progress
|
||||
title="OVERDUE PROGRESS INFOS (DAYS)"
|
||||
[data]="tspInfo.trProgressInfo"></app-tr-progress>
|
||||
<app-tr-flow-errors
|
||||
title="TR FLOW ERRORS"
|
||||
[data]="tspInfo.trFlowErrors"></app-tr-flow-errors>
|
||||
<app-pra-goals
|
||||
title="PRA TR GOALS(A,B,C PRIO)"
|
||||
[data]="tspInfo.praGoals"></app-pra-goals>
|
||||
<app-expedites
|
||||
title="NUMBER OF EXPEDITES (W/O PA)"
|
||||
[data]="tspInfo.expedites"></app-expedites>
|
||||
<app-animgif
|
||||
title=""
|
||||
[data]="tspInfo.animGifs"></app-animgif>
|
||||
</p>
|
||||
25
src/app/tsp-info/info-page/info-page.component.spec.ts
Normal file
25
src/app/tsp-info/info-page/info-page.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { InfoPageComponent } from './info-page.component';
|
||||
|
||||
describe('InfoPageComponent', () => {
|
||||
let component: InfoPageComponent;
|
||||
let fixture: ComponentFixture<InfoPageComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ InfoPageComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(InfoPageComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
34
src/app/tsp-info/info-page/info-page.component.ts
Normal file
34
src/app/tsp-info/info-page/info-page.component.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import {Component, OnInit} from '@angular/core';
|
||||
import {ActivatedRoute} from "@angular/router";
|
||||
import {Title} from "@angular/platform-browser";
|
||||
|
||||
import {
|
||||
TspInfo,
|
||||
TspInfoService,
|
||||
} from "../shared";
|
||||
|
||||
@Component({
|
||||
selector: 'app-info-page',
|
||||
templateUrl: './info-page.component.html',
|
||||
styleUrls: ['./info-page.component.css']
|
||||
})
|
||||
export class InfoPageComponent implements OnInit {
|
||||
|
||||
constructor(private titleService: Title,
|
||||
private route: ActivatedRoute,
|
||||
private tspInfoService: TspInfoService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.titleService.setTitle('TaurusXFT : TSP INFO');
|
||||
this.route.data.subscribe((data: { tspInfo: TspInfo }) => this.tspInfo = data.tspInfo);
|
||||
}
|
||||
|
||||
get tspInfo(): TspInfo {
|
||||
return this.tspInfoService.tspInfo;
|
||||
}
|
||||
|
||||
set tspInfo(tspInfo: TspInfo) {
|
||||
this.tspInfoService.tspInfo = tspInfo;
|
||||
}
|
||||
}
|
||||
0
src/app/tsp-info/pra-goals/pra-goals.component.css
Normal file
0
src/app/tsp-info/pra-goals/pra-goals.component.css
Normal file
24
src/app/tsp-info/pra-goals/pra-goals.component.html
Normal file
24
src/app/tsp-info/pra-goals/pra-goals.component.html
Normal file
@ -0,0 +1,24 @@
|
||||
<h1>{{title}}</h1>
|
||||
<p>
|
||||
<span class="heading">CORE</span>
|
||||
<span class="heading">SIG</span>
|
||||
<span class="heading">TADE</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="heading">{{data.core.A}}</span>
|
||||
<span class="heading">{{data.sig.A}}</span>
|
||||
<span class="heading">{{data.tade.A}}</span>
|
||||
</p>
|
||||
<h2>{{sumA}}</h2>
|
||||
<p>
|
||||
<span class="heading">{{data.core.B}}</span>
|
||||
<span class="heading">{{data.sig.B}}</span>
|
||||
<span class="heading">{{data.tade.B}}</span>
|
||||
</p>
|
||||
<h2>{{sumB}}</h2>
|
||||
<p>
|
||||
<span class="heading">{{data.core.C}}</span>
|
||||
<span class="heading">{{data.sig.C}}</span>
|
||||
<span class="heading">{{data.tade.C}}</span>
|
||||
</p>
|
||||
<h2>{{sumC}}</h2>
|
||||
25
src/app/tsp-info/pra-goals/pra-goals.component.spec.ts
Normal file
25
src/app/tsp-info/pra-goals/pra-goals.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { PraGoalsComponent } from './pra-goals.component';
|
||||
|
||||
describe('PraGoalsComponent', () => {
|
||||
let component: PraGoalsComponent;
|
||||
let fixture: ComponentFixture<PraGoalsComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ PraGoalsComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(PraGoalsComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
43
src/app/tsp-info/pra-goals/pra-goals.component.ts
Normal file
43
src/app/tsp-info/pra-goals/pra-goals.component.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {InfoBoxComponent} from "../info-box/info-box.component";
|
||||
import {PrioValues} from "../shared/prio-values.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-pra-goals',
|
||||
templateUrl: './pra-goals.component.html',
|
||||
styleUrls: [
|
||||
'../info-box/info-box.component.css',
|
||||
'./pra-goals.component.css'
|
||||
]
|
||||
})
|
||||
export class PraGoalsComponent extends InfoBoxComponent implements OnInit {
|
||||
|
||||
@Input() data: {
|
||||
core: PrioValues,
|
||||
sig: PrioValues,
|
||||
tade: PrioValues
|
||||
};
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
get sumA(): number {
|
||||
return this.sum('A');
|
||||
}
|
||||
|
||||
get sumB(): number {
|
||||
return this.sum('B');
|
||||
}
|
||||
|
||||
get sumC(): number {
|
||||
return this.sum('C');
|
||||
}
|
||||
|
||||
public sum(prio: string) {
|
||||
return ['core', 'sig', 'tade'].reduce((sum,unit) => sum + this.data[unit][prio], 0);
|
||||
}
|
||||
}
|
||||
4
src/app/tsp-info/shared/anim-gif.model.ts
Normal file
4
src/app/tsp-info/shared/anim-gif.model.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export class AnimGif {
|
||||
public url: string;
|
||||
public label: string;
|
||||
}
|
||||
4
src/app/tsp-info/shared/expedite-info.model.ts
Normal file
4
src/app/tsp-info/shared/expedite-info.model.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export class ExpediteInfo {
|
||||
public unassigned: number;
|
||||
public all: number;
|
||||
}
|
||||
9
src/app/tsp-info/shared/index.ts
Normal file
9
src/app/tsp-info/shared/index.ts
Normal file
@ -0,0 +1,9 @@
|
||||
export * from './anim-gif.model';
|
||||
export * from './expedite-info.model';
|
||||
export * from './lab-temperature.model';
|
||||
export * from './tr-flow-error.model';
|
||||
export * from './prio-values.model';
|
||||
export * from './tr-progress.model';
|
||||
export * from './tsp-info.model';
|
||||
|
||||
export * from './tsp-info.service';
|
||||
2
src/app/tsp-info/shared/lab-temperature.model.ts
Normal file
2
src/app/tsp-info/shared/lab-temperature.model.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export class LabTemperature {
|
||||
}
|
||||
5
src/app/tsp-info/shared/prio-values.model.ts
Normal file
5
src/app/tsp-info/shared/prio-values.model.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export class PrioValues {
|
||||
public A: number = 0;
|
||||
public B: number = 0;
|
||||
public C: number = 0;
|
||||
}
|
||||
4
src/app/tsp-info/shared/tr-flow-error.model.ts
Normal file
4
src/app/tsp-info/shared/tr-flow-error.model.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export class TrFlowError {
|
||||
public label: string = '';
|
||||
public value: number = 0;
|
||||
}
|
||||
6
src/app/tsp-info/shared/tr-progress.model.ts
Normal file
6
src/app/tsp-info/shared/tr-progress.model.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export class TrProgress {
|
||||
public eriref: string = '';
|
||||
public heading: string = '';
|
||||
public prio: string = '';
|
||||
public lastProgressInDays: number = 0;
|
||||
}
|
||||
31
src/app/tsp-info/shared/tsp-info.model.ts
Normal file
31
src/app/tsp-info/shared/tsp-info.model.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import {
|
||||
AnimGif,
|
||||
ExpediteInfo,
|
||||
LabTemperature,
|
||||
PrioValues,
|
||||
TrProgress,
|
||||
TrFlowError
|
||||
} from ".";
|
||||
|
||||
|
||||
export class TspInfo {
|
||||
public cameraMovieUrls: Array<string> = [];
|
||||
public animGifs: Array<AnimGif> = [];
|
||||
public praGoals: {
|
||||
core: PrioValues,
|
||||
sig: PrioValues,
|
||||
tade: PrioValues
|
||||
};
|
||||
public trProgressInfo: Array<TrProgress> = [];
|
||||
public trFlowErrors: Array<TrFlowError> = [];
|
||||
public expedites: ExpediteInfo = {
|
||||
unassigned: 0,
|
||||
all: 0
|
||||
};
|
||||
public isVacationSoon: boolean = false;
|
||||
public labTemperature: LabTemperature = {
|
||||
back_right: 0,
|
||||
back_middle: 0,
|
||||
back_left: 0
|
||||
};
|
||||
}
|
||||
15
src/app/tsp-info/shared/tsp-info.service.spec.ts
Normal file
15
src/app/tsp-info/shared/tsp-info.service.spec.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import { TestBed, inject } from '@angular/core/testing';
|
||||
|
||||
import { TspInfoService } from './tsp-info.service';
|
||||
|
||||
describe('TspInfoService', () => {
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
providers: [TspInfoService]
|
||||
});
|
||||
});
|
||||
|
||||
it('should be created', inject([TspInfoService], (service: TspInfoService) => {
|
||||
expect(service).toBeTruthy();
|
||||
}));
|
||||
});
|
||||
54
src/app/tsp-info/shared/tsp-info.service.ts
Normal file
54
src/app/tsp-info/shared/tsp-info.service.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {Http, Headers} from "@angular/http";
|
||||
import 'rxjs/Rx';
|
||||
import {Router, Resolve, ActivatedRouteSnapshot} from '@angular/router';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
|
||||
import {environment} from '../../../environments/environment';
|
||||
import {
|
||||
TspInfo
|
||||
} from '.';
|
||||
|
||||
@Injectable()
|
||||
export class TspInfoService {
|
||||
private url = environment.apiUri + '/api/tsp-info';
|
||||
|
||||
private cachedTspInfo: TspInfo = new TspInfo();
|
||||
|
||||
constructor(private httpService: Http) {}
|
||||
|
||||
/**
|
||||
* Returns an observable instance to the kanban board api
|
||||
*
|
||||
* @returns {Observable<TspInfo>}
|
||||
*/
|
||||
public getList(): Observable<TspInfo> {
|
||||
return this.httpService.get(this.url).map(res => <TspInfo>res.json());
|
||||
}
|
||||
|
||||
/**
|
||||
* Route preload resolver
|
||||
*
|
||||
* @param {ActivatedRouteSnapshot} route
|
||||
* @returns {Promise<TspInfo>}
|
||||
*/
|
||||
public resolve(route: ActivatedRouteSnapshot): Promise<TspInfo> {
|
||||
return this.getList().toPromise().then(result => result ? result : false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the board
|
||||
*/
|
||||
public reload() {
|
||||
this.getList().subscribe(result => this.cachedTspInfo = result);
|
||||
}
|
||||
|
||||
get tspInfo(): TspInfo {
|
||||
return this.cachedTspInfo;
|
||||
}
|
||||
|
||||
set tspInfo(tspInfo: TspInfo) {
|
||||
this.cachedTspInfo = tspInfo;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
<h1>{{title}} ({{errorSum}})</h1>
|
||||
<ul>
|
||||
<li *ngFor="let flowError of data">
|
||||
<span class="label">{{flowError.label}}</span>
|
||||
<span class="value">{{flowError.value}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { TrFlowErrorsComponent } from './tr-flow-errors.component';
|
||||
|
||||
describe('TrFlowErrorsComponent', () => {
|
||||
let component: TrFlowErrorsComponent;
|
||||
let fixture: ComponentFixture<TrFlowErrorsComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ TrFlowErrorsComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(TrFlowErrorsComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
27
src/app/tsp-info/tr-flow-errors/tr-flow-errors.component.ts
Normal file
27
src/app/tsp-info/tr-flow-errors/tr-flow-errors.component.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {InfoBoxComponent} from "../info-box/info-box.component";
|
||||
import {TrFlowError} from "../shared/tr-flow-error.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-tr-flow-errors',
|
||||
templateUrl: './tr-flow-errors.component.html',
|
||||
styleUrls: [
|
||||
'../info-box/info-box.component.css',
|
||||
'./tr-flow-errors.component.css'
|
||||
]
|
||||
})
|
||||
export class TrFlowErrorsComponent extends InfoBoxComponent implements OnInit {
|
||||
|
||||
@Input() data: Array<TrFlowError> = [];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
get errorSum(): number {
|
||||
return this.data.reduce((sum: number, flowError: TrFlowError) => sum + flowError.value, 0);
|
||||
}
|
||||
}
|
||||
7
src/app/tsp-info/tr-progress/tr-progress.component.html
Normal file
7
src/app/tsp-info/tr-progress/tr-progress.component.html
Normal file
@ -0,0 +1,7 @@
|
||||
<h1>THE MOST OVERDUE PROGRESS INFOS (DAYS)</h1>
|
||||
<ul>
|
||||
<li *ngFor="let progress of data">
|
||||
<span class="label">{{progress.eriref}} {{progress.heading}}</span>
|
||||
<span class="value">{{progress.lastProgressInDays}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
25
src/app/tsp-info/tr-progress/tr-progress.component.spec.ts
Normal file
25
src/app/tsp-info/tr-progress/tr-progress.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { TrProgressComponent } from './tr-progress.component';
|
||||
|
||||
describe('TrProgressComponent', () => {
|
||||
let component: TrProgressComponent;
|
||||
let fixture: ComponentFixture<TrProgressComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ TrProgressComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(TrProgressComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
24
src/app/tsp-info/tr-progress/tr-progress.component.ts
Normal file
24
src/app/tsp-info/tr-progress/tr-progress.component.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {InfoBoxComponent} from "../info-box/info-box.component";
|
||||
import {TrProgress} from "../shared/tr-progress.model";
|
||||
|
||||
@Component({
|
||||
selector: 'app-tr-progress',
|
||||
templateUrl: './tr-progress.component.html',
|
||||
styleUrls: [
|
||||
'../info-box/info-box.component.css',
|
||||
'./tr-progress.component.css'
|
||||
]
|
||||
})
|
||||
export class TrProgressComponent extends InfoBoxComponent implements OnInit {
|
||||
|
||||
@Input() data: Array<TrProgress> = [];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
||||
21
src/app/tsp-info/tsp-info-routing.module.ts
Normal file
21
src/app/tsp-info/tsp-info-routing.module.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { InfoPageComponent } from "./info-page/info-page.component";
|
||||
import { TspInfoService } from "./shared/tsp-info.service";
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: 'tsp-info-page',
|
||||
children: [],
|
||||
component: InfoPageComponent,
|
||||
resolve: {
|
||||
tspInfo: TspInfoService,
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class TspInfoRoutingModule { }
|
||||
32
src/app/tsp-info/tsp-info.module.ts
Normal file
32
src/app/tsp-info/tsp-info.module.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { TspInfoRoutingModule } from './tsp-info-routing.module';
|
||||
import { InfoBoxComponent } from './info-box/info-box.component';
|
||||
import { TrProgressComponent } from './tr-progress/tr-progress.component';
|
||||
import { ExpeditesComponent } from './expedites/expedites.component';
|
||||
import { TrFlowErrorsComponent } from './tr-flow-errors/tr-flow-errors.component';
|
||||
import { PraGoalsComponent } from './pra-goals/pra-goals.component';
|
||||
import { InfoPageComponent } from './info-page/info-page.component';
|
||||
import { AnimgifComponent } from './animgif/animgif.component';
|
||||
import { TspInfoService } from './shared/tsp-info.service';
|
||||
import { HttpModule } from "@angular/http";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
HttpModule,
|
||||
TspInfoRoutingModule
|
||||
],
|
||||
declarations: [
|
||||
InfoBoxComponent,
|
||||
TrProgressComponent,
|
||||
ExpeditesComponent,
|
||||
TrFlowErrorsComponent,
|
||||
PraGoalsComponent,
|
||||
InfoPageComponent,
|
||||
AnimgifComponent
|
||||
],
|
||||
providers: [TspInfoService]
|
||||
})
|
||||
export class TspInfoModule { }
|
||||
Loading…
x
Reference in New Issue
Block a user