TSK-380 Adapt application services for using HAL format
This commit is contained in:
parent
7dc951351d
commit
751d77254b
|
@ -3,7 +3,6 @@ import { RouterModule, Routes } from '@angular/router';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
|
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
|
||||||
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
|
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
|
||||||
import { CategoriesadministrationComponent } from './categoriesadministration/categoriesadministration.component';
|
|
||||||
import { MasterAndDetailComponent } from './shared/masterAndDetail/master-and-detail.component';
|
import { MasterAndDetailComponent } from './shared/masterAndDetail/master-and-detail.component';
|
||||||
import { NoAccessComponent } from './workbasket/noAccess/no-access.component';
|
import { NoAccessComponent } from './workbasket/noAccess/no-access.component';
|
||||||
|
|
||||||
|
@ -33,7 +32,7 @@ const appRoutes: Routes = [
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: CategoriesadministrationComponent,
|
component: WorkbasketListComponent,
|
||||||
outlet: 'detail'
|
outlet: 'detail'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -17,10 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
*/
|
*/
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
|
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
|
||||||
import { CategorieslistComponent } from './categorieslist/categorieslist.component';
|
|
||||||
import { CategoriestreeComponent } from './categoriestree/categoriestree.component';
|
|
||||||
import { CategoryeditorComponent } from './categoryeditor/categoryeditor.component';
|
|
||||||
import { CategoriesadministrationComponent } from './categoriesadministration/categoriesadministration.component';
|
|
||||||
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
|
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
|
||||||
import { WorkbasketInformationComponent } from './workbasket/details/information/workbasket-information.component';
|
import { WorkbasketInformationComponent } from './workbasket/details/information/workbasket-information.component';
|
||||||
import { DistributionTargetsComponent } from './workbasket/details/distribution-targets/distribution-targets.component';
|
import { DistributionTargetsComponent } from './workbasket/details/distribution-targets/distribution-targets.component';
|
||||||
|
@ -69,10 +65,6 @@ const MODULES = [
|
||||||
const DECLARATIONS = [
|
const DECLARATIONS = [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
WorkbasketListComponent,
|
WorkbasketListComponent,
|
||||||
CategorieslistComponent,
|
|
||||||
CategoriestreeComponent,
|
|
||||||
CategoryeditorComponent,
|
|
||||||
CategoriesadministrationComponent,
|
|
||||||
AccessItemsComponent,
|
AccessItemsComponent,
|
||||||
WorkbasketDetailsComponent,
|
WorkbasketDetailsComponent,
|
||||||
MasterAndDetailComponent,
|
MasterAndDetailComponent,
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
<div class="col-md-3">
|
|
||||||
<app-categoriestree (categorySelected)="onCategorySelected($event)"></app-categoriestree>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-9">
|
|
||||||
<app-categoryeditor [categorySelected]="categorySelected"></app-categoryeditor>
|
|
||||||
</div>
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CategoriesadministrationComponent } from './categoriesadministration.component';
|
|
||||||
|
|
||||||
describe('CategoriesadministrattionComponent', () => {
|
|
||||||
let component: CategoriesadministrationComponent;
|
|
||||||
let fixture: ComponentFixture<CategoriesadministrationComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CategoriesadministrationComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CategoriesadministrationComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should be created', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { Component, OnInit, Input } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-categoriesadministration',
|
|
||||||
templateUrl: './categoriesadministration.component.html',
|
|
||||||
styleUrls: ['./categoriesadministration.component.css']
|
|
||||||
})
|
|
||||||
export class CategoriesadministrationComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Input()
|
|
||||||
categorySelected: any;
|
|
||||||
|
|
||||||
onCategorySelected(arg) {
|
|
||||||
console.log("Event angekommen: ",arg);
|
|
||||||
this.categorySelected = arg;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
export class Category {
|
|
||||||
constructor(
|
|
||||||
public id: string,
|
|
||||||
public name: string,
|
|
||||||
public owner: string,
|
|
||||||
public description: string,
|
|
||||||
public priority: number,
|
|
||||||
public serviceLevel: string) { }
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
<table class="table table-hover">
|
|
||||||
<thead>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</thead>
|
|
||||||
<tr *ngFor="let category of categories">
|
|
||||||
<td>{{ category.id }}</td>
|
|
||||||
<td>{{ category.name }}</td>
|
|
||||||
<td>{{ category.description }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CategorieslistComponent } from './categorieslist.component';
|
|
||||||
|
|
||||||
describe('CategorieslistComponent', () => {
|
|
||||||
let component: CategorieslistComponent;
|
|
||||||
let fixture: ComponentFixture<CategorieslistComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CategorieslistComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CategorieslistComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should be created', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,31 +0,0 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-categorieslist',
|
|
||||||
templateUrl: './categorieslist.component.html',
|
|
||||||
styleUrls: ['./categorieslist.component.css']
|
|
||||||
})
|
|
||||||
export class CategorieslistComponent implements OnInit {
|
|
||||||
|
|
||||||
categories = [ {
|
|
||||||
"id": "1",
|
|
||||||
"name": "Category 1",
|
|
||||||
"description": "Das ist die erste Business Category."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2",
|
|
||||||
"name": "Category 2",
|
|
||||||
"description": "Das ist die erste Business Category."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3",
|
|
||||||
"name": "Category 3",
|
|
||||||
"description": "Das ist die erste Business Category."
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit() {}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
<tree-root [nodes]="nodes"
|
|
||||||
(onActivate)="onCategorySelected($event)">
|
|
||||||
</tree-root>
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CategoriestreeComponent } from './categoriestree.component';
|
|
||||||
|
|
||||||
describe('CategoriestreeComponent', () => {
|
|
||||||
let component: CategoriestreeComponent;
|
|
||||||
let fixture: ComponentFixture<CategoriestreeComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CategoriestreeComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CategoriestreeComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should be created', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,87 +0,0 @@
|
||||||
import { Component, OnInit, EventEmitter, Output } from '@angular/core';
|
|
||||||
import { Category } from '../categoriesadministration/category';
|
|
||||||
import { CategoryService } from '../services/category.service';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-categoriestree',
|
|
||||||
templateUrl: './categoriestree.component.html',
|
|
||||||
styleUrls: ['./categoriestree.component.css'],
|
|
||||||
providers: [CategoryService]
|
|
||||||
})
|
|
||||||
export class CategoriestreeComponent implements OnInit {
|
|
||||||
|
|
||||||
categories: Category[];
|
|
||||||
errorMessage: string;
|
|
||||||
|
|
||||||
nodes = [];
|
|
||||||
|
|
||||||
/*
|
|
||||||
nodes = [
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
name: 'Category 1',
|
|
||||||
children: [
|
|
||||||
{ id: '2', name: 'Category 2' },
|
|
||||||
{ id: '3', name: 'Category 3' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '4',
|
|
||||||
name: 'Category 4',
|
|
||||||
children: [
|
|
||||||
{ id: '5', name: 'Category 5' },
|
|
||||||
{
|
|
||||||
id: '6',
|
|
||||||
name: 'Category 6',
|
|
||||||
children: [
|
|
||||||
{ id: '7', name: 'Category 7' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
constructor(private categoryService: CategoryService) {
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.getCategories();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Output()
|
|
||||||
categorySelected = new EventEmitter<Category>();
|
|
||||||
|
|
||||||
onCategorySelected(arg) {
|
|
||||||
console.log("Selected: ", arg);
|
|
||||||
var category: Category = arg.node.data;
|
|
||||||
this.categorySelected.next(category);
|
|
||||||
}
|
|
||||||
|
|
||||||
getCategories() {
|
|
||||||
console.log("Going to load categories...");
|
|
||||||
this.categoryService.getCategories()
|
|
||||||
.subscribe(c => {
|
|
||||||
this.categories = c;
|
|
||||||
console.log("RESPONSE: ", c);
|
|
||||||
this.nodes = c;
|
|
||||||
if (this.categories != null && this.categories.length > 0) {
|
|
||||||
// this.nodes = [];
|
|
||||||
this.categories.forEach(category => {
|
|
||||||
console.log("Geladene Category: ", category);
|
|
||||||
// let count = 1;
|
|
||||||
// this.nodes.push({'1', 'NAME'});
|
|
||||||
// count++;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// this.autoCompleteData.push(workbasket.name);
|
|
||||||
// categories => this.categories = heroes,
|
|
||||||
// error => this.errorMessage = <any>error);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
<h3>Category Details of {{categorySelected?.name}} (ID: {{categorySelected?.id}})</h3>
|
|
||||||
<form class="form-horizontal">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-2 control-label" for="name">Name</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input class="form-control" id="name" placeholder="Name" [(ngModel)]="categorySelected.name" name="name">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-2 control-label" for="descrption">Description</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input class="form-control" id="description" placeholder="Description" [(ngModel)]="categorySelected.description" name="description">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-2 control-label" for="owner">Owner</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input class="form-control" id="owner" placeholder="Owner" [(ngModel)]="categorySelected.owner" name="owner">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-2 control-label" for="priority">Priority</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input class="form-control" id="priority" placeholder="Priority" [(ngModel)]="categorySelected.priority" name="priority">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-2 control-label" for="servicelevel">Service Level</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input class="form-control" id="servicelevel" placeholder="Service Level" [(ngModel)]="categorySelected.serviceLevel" name="servicelevel">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
|
||||||
<button type="submit" class="btn btn-default btn-primary">Save changes</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CategoryeditorComponent } from './categoryeditor.component';
|
|
||||||
|
|
||||||
describe('CategoryeditorComponent', () => {
|
|
||||||
let component: CategoryeditorComponent;
|
|
||||||
let fixture: ComponentFixture<CategoryeditorComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ CategoryeditorComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CategoryeditorComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should be created', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,20 +0,0 @@
|
||||||
import { Component, OnInit, Input } from '@angular/core';
|
|
||||||
import { Category } from '../categoriesadministration/category';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-categoryeditor',
|
|
||||||
templateUrl: './categoryeditor.component.html',
|
|
||||||
styleUrls: ['./categoryeditor.component.css']
|
|
||||||
})
|
|
||||||
export class CategoryeditorComponent implements OnInit {
|
|
||||||
|
|
||||||
constructor() { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.categorySelected = new Category('', '', '', '', 0,'');
|
|
||||||
}
|
|
||||||
|
|
||||||
@Input()
|
|
||||||
categorySelected: Category;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
export class Links {
|
export class Links {
|
||||||
constructor(
|
constructor(
|
||||||
public rel: string,
|
public self: {'href': string},
|
||||||
public href: string,
|
public distributionTargets: {'href': string} = undefined,
|
||||||
|
public accessItems: {'href': string} = undefined
|
||||||
){}
|
){}
|
||||||
}
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { Links } from "./links";
|
||||||
|
import { WorkbasketAccessItems } from "./workbasket-access-items";
|
||||||
|
|
||||||
|
export class WorkbasketAccessItemsResource {
|
||||||
|
constructor(
|
||||||
|
public _embedded: { 'accessItems': Array<WorkbasketAccessItems> } = { 'accessItems': [] },
|
||||||
|
public _links: Links = undefined
|
||||||
|
) { }
|
||||||
|
}
|
|
@ -22,6 +22,6 @@ export class WorkbasketAccessItems {
|
||||||
public permCustom10: boolean = false,
|
public permCustom10: boolean = false,
|
||||||
public permCustom11: boolean = false,
|
public permCustom11: boolean = false,
|
||||||
public permCustom12: boolean = false,
|
public permCustom12: boolean = false,
|
||||||
public links: Array<Links> = undefined
|
public _links: Links = undefined
|
||||||
) { }
|
) { }
|
||||||
}
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { WorkbasketSummary } from './workbasket-summary';
|
||||||
|
import { Links } from './links';
|
||||||
|
|
||||||
|
export class WorkbasketSummaryResource {
|
||||||
|
constructor(public _embedded: {'workbaskets': Array<WorkbasketSummary> } = {'workbaskets': []}, public _links: Links = null) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
import {Links} from './links';
|
import {Links} from './links';
|
||||||
|
|
||||||
export class WorkbasketSummary {
|
export class WorkbasketSummary{
|
||||||
constructor(
|
constructor(
|
||||||
public workbasketId: string,
|
public workbasketId: string,
|
||||||
public key: string,
|
public key: string,
|
||||||
|
@ -14,5 +14,6 @@ export class WorkbasketSummary {
|
||||||
public orgLevel2: string,
|
public orgLevel2: string,
|
||||||
public orgLevel3: string,
|
public orgLevel3: string,
|
||||||
public orgLevel4: string,
|
public orgLevel4: string,
|
||||||
public links: Array<Links> = undefined){}
|
public _links: Links = undefined){
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
import { WorkbasketSummary } from './workbasketSummary';
|
|
||||||
import { Links } from './links';
|
import { Links } from './links';
|
||||||
export class Workbasket {
|
export class Workbasket{
|
||||||
constructor(
|
constructor(
|
||||||
public workbasketId: string,
|
public workbasketId: string,
|
||||||
public created: string = undefined,
|
public created: string = undefined,
|
||||||
|
@ -19,7 +18,8 @@ export class Workbasket {
|
||||||
public orgLevel2: string = undefined,
|
public orgLevel2: string = undefined,
|
||||||
public orgLevel3: string = undefined,
|
public orgLevel3: string = undefined,
|
||||||
public orgLevel4: string = undefined,
|
public orgLevel4: string = undefined,
|
||||||
public links: Array<Links> = undefined){}
|
public _links:Links = undefined) {
|
||||||
|
}
|
||||||
|
|
||||||
public static equals(org: Workbasket, comp: Workbasket): boolean {
|
public static equals(org: Workbasket, comp: Workbasket): boolean {
|
||||||
if (org.workbasketId !== comp.workbasketId) { return false; }
|
if (org.workbasketId !== comp.workbasketId) { return false; }
|
||||||
|
|
|
@ -2,14 +2,15 @@ import { Pipe, PipeTransform } from '@angular/core';
|
||||||
|
|
||||||
@Pipe({ name: 'selectWorkbaskets' })
|
@Pipe({ name: 'selectWorkbaskets' })
|
||||||
export class SelectWorkBasketPipe implements PipeTransform {
|
export class SelectWorkBasketPipe implements PipeTransform {
|
||||||
transform(originArray: any, arg0: any, arg1: any): Object[] {
|
transform(originArray: any, selectionArray: any, arg1: any): Object[] {
|
||||||
let returnArray = [];
|
let returnArray = [];
|
||||||
if (!originArray) {
|
if (!originArray) {
|
||||||
return returnArray;
|
return returnArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let index = originArray.length - 1; index >= 0; index--) {
|
for (let index = originArray.length - 1; index >= 0; index--) {
|
||||||
if ((arg1 && !arg0.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId})) ||
|
if ((arg1 && !selectionArray.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId })) ||
|
||||||
!arg1 && arg0.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId})) {
|
!arg1 && selectionArray.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId })) {
|
||||||
originArray.splice(index, 1);
|
originArray.splice(index, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,5 +18,4 @@ export class SelectWorkBasketPipe implements PipeTransform {
|
||||||
return returnArray;
|
return returnArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,15 +0,0 @@
|
||||||
import { TestBed, inject } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { CategoryService } from './category.service';
|
|
||||||
|
|
||||||
describe('CategoryService', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
providers: [CategoryService]
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should be created', inject([CategoryService], (service: CategoryService) => {
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
}));
|
|
||||||
});
|
|
|
@ -1,44 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { RequestOptions, Headers, Http, Response } from '@angular/http';
|
|
||||||
import { environment } from '../../environments/environment';
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
|
||||||
import 'rxjs/add/operator/catch';
|
|
||||||
import 'rxjs/add/operator/map';
|
|
||||||
|
|
||||||
import { Category } from '../categoriesadministration/category';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class CategoryService {
|
|
||||||
private categoryServiceUrl = environment.taskanaRestUrl + '/v1/classifications'; // URL to web API
|
|
||||||
constructor(private http: Http) { }
|
|
||||||
getCategories(): Observable<Category[]> {
|
|
||||||
return this.http.get(this.categoryServiceUrl, this.createAuthorizationHeader())
|
|
||||||
.map(this.extractData)
|
|
||||||
.catch(this.handleError);
|
|
||||||
}
|
|
||||||
private extractData(res: Response) {
|
|
||||||
let body = res.json();
|
|
||||||
console.log("Body: ", body);
|
|
||||||
return body;
|
|
||||||
}
|
|
||||||
private handleError(error: Response | any) {
|
|
||||||
// In a real world app, you might use a remote logging infrastructure
|
|
||||||
let errMsg: string;
|
|
||||||
if (error instanceof Response) {
|
|
||||||
const body = error.json() || '';
|
|
||||||
const err = body.error || JSON.stringify(body);
|
|
||||||
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
|
|
||||||
} else {
|
|
||||||
errMsg = error.message ? error.message : error.toString();
|
|
||||||
}
|
|
||||||
console.error(errMsg);
|
|
||||||
return Observable.throw(errMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
private createAuthorizationHeader() {
|
|
||||||
let headers: Headers = new Headers();
|
|
||||||
headers.append("Authorization", "Basic dXNlcl8xXzE6dXNlcl8xXzE=");
|
|
||||||
|
|
||||||
return new RequestOptions({ headers: headers });
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +1,15 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { HttpClientModule, HttpClient, HttpHeaders, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
import { HttpClientModule, HttpClient, HttpHeaders, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
||||||
import { WorkbasketSummary } from '../model/workbasketSummary';
|
import { WorkbasketSummary } from '../model/workbasket-summary';
|
||||||
import { Workbasket } from '../model/workbasket';
|
import { Workbasket } from '../model/workbasket';
|
||||||
import { WorkbasketAccessItems } from '../model/workbasket-access-items';
|
import { WorkbasketAccessItems } from '../model/workbasket-access-items';
|
||||||
import { environment } from '../../environments/environment';
|
import { environment } from '../../environments/environment';
|
||||||
import { Direction } from '../shared/sort/sort.component';
|
import { Direction } from '../shared/sort/sort.component';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { Subject } from 'rxjs/Subject';
|
import { Subject } from 'rxjs/Subject';
|
||||||
|
import { map } from 'rxjs/operator/map';
|
||||||
|
import { WorkbasketSummaryResource } from '../model/workbasket-summary-resource';
|
||||||
|
import { WorkbasketAccessItemsResource } from '../model/workbasket-access-items-resource';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WorkbasketService {
|
export class WorkbasketService {
|
||||||
|
@ -35,12 +38,12 @@ export class WorkbasketService {
|
||||||
|
|
||||||
httpOptions = {
|
httpOptions = {
|
||||||
headers: new HttpHeaders({
|
headers: new HttpHeaders({
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/hal+json',
|
||||||
'Authorization': 'Basic VEVBTUxFQURfMTpURUFNTEVBRF8x'
|
'Authorization': 'Basic VEVBTUxFQURfMTpURUFNTEVBRF8x'
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
private workbasketSummaryRef: Observable<WorkbasketSummary[]>;
|
private workbasketSummaryRef: Observable<WorkbasketSummaryResource>;
|
||||||
|
|
||||||
//#region "REST calls"
|
//#region "REST calls"
|
||||||
// GET
|
// GET
|
||||||
|
@ -55,11 +58,11 @@ export class WorkbasketService {
|
||||||
type: string = undefined,
|
type: string = undefined,
|
||||||
key: string = undefined,
|
key: string = undefined,
|
||||||
keyLike: string = undefined,
|
keyLike: string = undefined,
|
||||||
requiredPermission: string = undefined): Observable<WorkbasketSummary[]> {
|
requiredPermission: string = undefined): Observable<WorkbasketSummaryResource> {
|
||||||
if (this.workbasketSummaryRef && !forceRequest) {
|
if (this.workbasketSummaryRef && !forceRequest) {
|
||||||
return this.workbasketSummaryRef;
|
return this.workbasketSummaryRef;
|
||||||
}
|
}
|
||||||
return this.httpClient.get<WorkbasketSummary[]>(`${environment.taskanaRestUrl}/v1/workbaskets/${this.getWorkbasketSummaryQueryParameters(sortBy, order, name,
|
return this.workbasketSummaryRef = this.httpClient.get<WorkbasketSummaryResource>(`${environment.taskanaRestUrl}/v1/workbaskets/${this.getWorkbasketSummaryQueryParameters(sortBy, order, name,
|
||||||
nameLike, descLike, owner, ownerLike, type, key, keyLike, requiredPermission)}`, this.httpOptions);
|
nameLike, descLike, owner, ownerLike, type, key, keyLike, requiredPermission)}`, this.httpOptions);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -79,16 +82,16 @@ export class WorkbasketService {
|
||||||
.catch(this.handleError);
|
.catch(this.handleError);
|
||||||
}
|
}
|
||||||
// DELETE
|
// DELETE
|
||||||
deleteWorkbasket(id: string) {
|
deleteWorkbasket(url: string) {
|
||||||
return this.httpClient.delete(environment.taskanaRestUrl + '/v1/workbaskets/' + id, this.httpOptions);
|
return this.httpClient.delete(url, this.httpOptions);
|
||||||
}
|
}
|
||||||
// GET
|
// GET
|
||||||
getWorkBasketAccessItems(id: String): Observable<WorkbasketAccessItems[]> {
|
getWorkBasketAccessItems(url: string): Observable<WorkbasketAccessItemsResource> {
|
||||||
return this.httpClient.get<WorkbasketAccessItems[]>(environment.taskanaRestUrl + '/v1/workbaskets/' + id + '/workbasketAccessItems', this.httpOptions);
|
return this.httpClient.get<WorkbasketAccessItemsResource>(url, this.httpOptions);
|
||||||
}
|
}
|
||||||
// POST
|
// POST
|
||||||
createWorkBasketAccessItem(workbasketAccessItem: WorkbasketAccessItems): Observable<WorkbasketAccessItems> {
|
createWorkBasketAccessItem(url: string, workbasketAccessItem: WorkbasketAccessItems): Observable<WorkbasketAccessItems> {
|
||||||
return this.httpClient.post<WorkbasketAccessItems>(environment.taskanaRestUrl + '/v1/workbaskets/workbasketAccessItems', workbasketAccessItem, this.httpOptions);
|
return this.httpClient.post<WorkbasketAccessItems>(url , workbasketAccessItem, this.httpOptions);
|
||||||
}
|
}
|
||||||
// PUT
|
// PUT
|
||||||
updateWorkBasketAccessItem(url: string, workbasketAccessItem: Array<WorkbasketAccessItems>): Observable<string> {
|
updateWorkBasketAccessItem(url: string, workbasketAccessItem: Array<WorkbasketAccessItems>): Observable<string> {
|
||||||
|
@ -97,29 +100,29 @@ export class WorkbasketService {
|
||||||
this.httpOptions);
|
this.httpOptions);
|
||||||
}
|
}
|
||||||
// GET
|
// GET
|
||||||
getWorkBasketsDistributionTargets(id: String): Observable<WorkbasketSummary[]> {
|
getWorkBasketsDistributionTargets(url: string): Observable<WorkbasketSummaryResource> {
|
||||||
return this.httpClient.get<WorkbasketSummary[]>(environment.taskanaRestUrl + '/v1/workbaskets/' + id + '/distributiontargets', this.httpOptions);
|
return this.httpClient.get<WorkbasketSummaryResource>(url, this.httpOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region "Service extras"
|
//#region "Service extras"
|
||||||
selectWorkBasket(id: string) {
|
selectWorkBasket(id: string) {
|
||||||
this.workBasketSelected.next(id);
|
this.workBasketSelected.next(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSelectedWorkBasket(): Observable < string > {
|
getSelectedWorkBasket(): Observable<string> {
|
||||||
return this.workBasketSelected.asObservable();
|
return this.workBasketSelected.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
triggerWorkBasketSaved() {
|
triggerWorkBasketSaved() {
|
||||||
this.workBasketSaved.next(Date.now());
|
this.workBasketSaved.next(Date.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
workbasketSavedTriggered(): Observable < number > {
|
workbasketSavedTriggered(): Observable<number> {
|
||||||
return this.workBasketSaved.asObservable();
|
return this.workBasketSaved.asObservable();
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region private
|
//#region private
|
||||||
|
@ -151,7 +154,7 @@ workbasketSavedTriggered(): Observable < number > {
|
||||||
query = query.slice(0, query.lastIndexOf('&'))
|
query = query.slice(0, query.lastIndexOf('&'))
|
||||||
}
|
}
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleError(error: Response | any) {
|
private handleError(error: Response | any) {
|
||||||
// In a real world app, you might use a remote logging infrastructure
|
// In a real world app, you might use a remote logging infrastructure
|
||||||
|
@ -165,7 +168,7 @@ workbasketSavedTriggered(): Observable < number > {
|
||||||
}
|
}
|
||||||
console.error(errMsg);
|
console.error(errMsg);
|
||||||
return Observable.throw(errMsg);
|
return Observable.throw(errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ export class SpinnerComponent {
|
||||||
isDelayedRunning: boolean = false;
|
isDelayedRunning: boolean = false;
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
delay: number = 300;
|
delay: number = 100;
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
set isRunning(value: boolean) {
|
set isRunning(value: boolean) {
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
import { Links} from '../../model/links';
|
|
||||||
|
|
||||||
export class Utils {
|
|
||||||
static getSelfRef(links: Array<Links>) {
|
|
||||||
return links.find(l => l.rel === 'self');
|
|
||||||
}
|
|
||||||
|
|
||||||
static getTagLinkRef(links: Array<Links>, tag: string) {
|
|
||||||
return links.find(l => l.rel === tag );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,6 +12,7 @@ import { Links } from '../../../model/links';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { AccessItemsComponent } from './access-items.component';
|
import { AccessItemsComponent } from './access-items.component';
|
||||||
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
||||||
|
import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource';
|
||||||
|
|
||||||
describe('AccessItemsComponent', () => {
|
describe('AccessItemsComponent', () => {
|
||||||
let component: AccessItemsComponent;
|
let component: AccessItemsComponent;
|
||||||
|
@ -31,11 +32,14 @@ describe('AccessItemsComponent', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture = TestBed.createComponent(AccessItemsComponent);
|
fixture = TestBed.createComponent(AccessItemsComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
component.workbasket = new Workbasket('1')
|
component.workbasket = new Workbasket('1','','','','','','','','','','','','','','','', '', new Links(undefined,undefined, {'href': 'someurl' }));
|
||||||
workbasketService = TestBed.get(WorkbasketService);
|
workbasketService = TestBed.get(WorkbasketService);
|
||||||
alertService = TestBed.get(AlertService);
|
alertService = TestBed.get(AlertService);
|
||||||
spyOn(workbasketService, 'getWorkBasketAccessItems').and.returnValue(Observable.of(new Array<WorkbasketAccessItems>(new WorkbasketAccessItems('id1', '1', 'accessID1', false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, new Array<Links>(new Links('setWorkbasketAccessItems', ''))),
|
spyOn(workbasketService, 'getWorkBasketAccessItems').and.returnValue(Observable.of(new WorkbasketAccessItemsResource(
|
||||||
new WorkbasketAccessItems('id2', '1', 'accessID2'))));
|
{'accessItems': new Array<WorkbasketAccessItems>(
|
||||||
|
new WorkbasketAccessItems('id1', '1', 'accessID1', false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||||
|
new WorkbasketAccessItems('id2', '1', 'accessID2')) }, new Links({ 'href': 'someurl' })
|
||||||
|
)));
|
||||||
spyOn(workbasketService, 'updateWorkBasketAccessItem').and.returnValue(Observable.of(true)),
|
spyOn(workbasketService, 'updateWorkBasketAccessItem').and.returnValue(Observable.of(true)),
|
||||||
spyOn(alertService, 'triggerAlert').and.returnValue(Observable.of(true)),
|
spyOn(alertService, 'triggerAlert').and.returnValue(Observable.of(true)),
|
||||||
debugElement = fixture.debugElement.nativeElement;
|
debugElement = fixture.debugElement.nativeElement;
|
||||||
|
@ -61,23 +65,6 @@ describe('AccessItemsComponent', () => {
|
||||||
expect(debugElement.querySelector('#button-add-access-item')).toBeTruthy;
|
expect(debugElement.querySelector('#button-add-access-item')).toBeTruthy;
|
||||||
});
|
});
|
||||||
|
|
||||||
xit('should highlight modified input', () => {
|
|
||||||
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].querySelector('div').getAttribute('class')).toBeNull();
|
|
||||||
debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].querySelector('input').click();
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].querySelector('div').getAttribute('class')).toBe('has-changes');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should undo changes if undo changes button is clicked', () => {
|
|
||||||
debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].querySelector('input').click();
|
|
||||||
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].getAttribute('class')).toBe('has-changes');
|
|
||||||
expect(debugElement.querySelectorAll('#wb-information > div > div')[0].querySelectorAll('button').length).toBe(2);
|
|
||||||
debugElement.querySelectorAll('#wb-information > div > div')[0].querySelectorAll('button')[1].click();
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelectorAll('td')[5].getAttribute('class')).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should remove an access item if remove button is clicked', () => {
|
it('should remove an access item if remove button is clicked', () => {
|
||||||
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr').length).toBe(2);
|
expect(debugElement.querySelectorAll('#table-access-items > tbody > tr').length).toBe(2);
|
||||||
debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelector('td > button').click();
|
debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelector('td > button').click();
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import { Component, OnInit, Input, AfterViewInit } from '@angular/core';
|
import { Component, OnInit, Input, AfterViewInit } from '@angular/core';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
import { Utils } from '../../../shared/utils/utils';
|
|
||||||
|
|
||||||
import { Workbasket } from '../../../model/workbasket';
|
import { Workbasket } from '../../../model/workbasket';
|
||||||
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
||||||
|
|
||||||
import { WorkbasketService } from '../../../services/workbasket.service';
|
import { WorkbasketService } from '../../../services/workbasket.service';
|
||||||
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
|
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
|
||||||
|
import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource';
|
||||||
|
|
||||||
declare var $: any;
|
declare var $: any;
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ export class AccessItemsComponent implements OnInit {
|
||||||
@Input()
|
@Input()
|
||||||
workbasket: Workbasket;
|
workbasket: Workbasket;
|
||||||
|
|
||||||
|
accessItemsResource: WorkbasketAccessItemsResource;
|
||||||
accessItems: Array<WorkbasketAccessItems>;
|
accessItems: Array<WorkbasketAccessItems>;
|
||||||
accessItemsClone: Array<WorkbasketAccessItems>;
|
accessItemsClone: Array<WorkbasketAccessItems>;
|
||||||
accessItemsResetClone: Array<WorkbasketAccessItems>;
|
accessItemsResetClone: Array<WorkbasketAccessItems>;
|
||||||
|
@ -33,8 +34,9 @@ export class AccessItemsComponent implements OnInit {
|
||||||
constructor(private workbasketService: WorkbasketService, private alertService: AlertService) { }
|
constructor(private workbasketService: WorkbasketService, private alertService: AlertService) { }
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.accessItemsubscription = this.workbasketService.getWorkBasketAccessItems(this.workbasket.workbasketId).subscribe( (accessItems: Array<WorkbasketAccessItems>) =>{
|
this.accessItemsubscription = this.workbasketService.getWorkBasketAccessItems(this.workbasket._links.accessItems.href).subscribe( (accessItemsResource: WorkbasketAccessItemsResource) =>{
|
||||||
this.accessItems = accessItems;
|
this.accessItemsResource = accessItemsResource;
|
||||||
|
this.accessItems = accessItemsResource._embedded.accessItems;
|
||||||
this.accessItemsClone = this.cloneAccessItems(this.accessItems);
|
this.accessItemsClone = this.cloneAccessItems(this.accessItems);
|
||||||
this.accessItemsResetClone = this.cloneAccessItems(this.accessItems);
|
this.accessItemsResetClone = this.cloneAccessItems(this.accessItems);
|
||||||
})
|
})
|
||||||
|
@ -59,11 +61,7 @@ export class AccessItemsComponent implements OnInit {
|
||||||
|
|
||||||
onSave(): boolean {
|
onSave(): boolean {
|
||||||
this.requestInProgress = true;
|
this.requestInProgress = true;
|
||||||
if(!this.accessItems[0].links){
|
this.workbasketService.updateWorkBasketAccessItem(this.accessItemsResource._links.self.href + '/', this.accessItems).subscribe(response =>{
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.workbasketService.updateWorkBasketAccessItem(Utils.getTagLinkRef(this.accessItems[0].links, 'setWorkbasketAccessItems').href, this.accessItems).subscribe(response =>{
|
|
||||||
this.accessItemsClone = this.cloneAccessItems(this.accessItems);
|
this.accessItemsClone = this.cloneAccessItems(this.accessItems);
|
||||||
this.accessItemsResetClone = this.cloneAccessItems(this.accessItems);
|
this.accessItemsResetClone = this.cloneAccessItems(this.accessItems);
|
||||||
this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, `Workbasket ${this.workbasket.name} Access items were saved successfully`));
|
this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, `Workbasket ${this.workbasket.name} Access items were saved successfully`));
|
||||||
|
@ -72,8 +70,10 @@ export class AccessItemsComponent implements OnInit {
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
this.modalErrorMessage = error.message;
|
this.modalErrorMessage = error.message;
|
||||||
|
this.requestInProgress = false;
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setValue() { debugger; }
|
setValue() { debugger; }
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
<taskana-spinner [isRunning]="requestInProgressRight" [isModal]="modalSpinner" positionClass="centered-spinner" class="centered-horizontally floating"></taskana-spinner>
|
<taskana-spinner [isRunning]="requestInProgressRight" [isModal]="modalSpinner" positionClass="centered-spinner" class="centered-horizontally floating"></taskana-spinner>
|
||||||
<ul class="list-group dual-list-group">
|
<ul class="list-group dual-list-group">
|
||||||
<li class="list-group-item" *ngFor="let distributionTarget of distributionTargetsRight | selectWorkbaskets: distributionTargetsSelected: 1"
|
<li class="list-group-item" *ngFor="let distributionTarget of distributionTargetsRight | selectWorkbaskets: distributionTargetsSelected: 1"
|
||||||
[class.selected]="distributionTarget.selected" type="text" (click)="distributionTarget.selected = !distributionTarget.selected">
|
[class.selected]="distributionTarget.select" type="text" (click)="distributionTarget.select = !distributionTarget.select">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<dl class="col-xs-1">
|
<dl class="col-xs-1">
|
||||||
<dt>
|
<dt>
|
||||||
|
|
|
@ -1,14 +1,48 @@
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||||
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
|
import { HttpModule, JsonpModule } from '@angular/http';
|
||||||
|
|
||||||
import { DistributionTargetsComponent } from './distribution-targets.component';
|
import { DistributionTargetsComponent } from './distribution-targets.component';
|
||||||
|
import { SpinnerComponent } from '../../../shared/spinner/spinner.component';
|
||||||
|
import { GeneralMessageModalComponent } from '../../../shared/general-message-modal/general-message-modal.component';
|
||||||
|
import { IconTypeComponent } from '../../../shared/type-icon/icon-type.component';
|
||||||
|
import { SelectWorkBasketPipe } from '../../../pipes/seleted-workbasket.pipe';
|
||||||
|
import { WorkbasketSummaryResource } from '../../../model/workbasket-summary-resource';
|
||||||
|
import { WorkbasketSummary } from '../../../model/workbasket-summary';
|
||||||
|
import { Links } from '../../../model/links';
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { WorkbasketService } from '../../../services/workbasket.service';
|
||||||
|
import { AlertService } from '../../../services/alert.service';
|
||||||
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
import { Workbasket } from '../../../model/workbasket';
|
||||||
|
|
||||||
|
const workbasketSummaryResource: WorkbasketSummaryResource = new WorkbasketSummaryResource({
|
||||||
|
'workbaskets': new Array<WorkbasketSummary>(
|
||||||
|
new WorkbasketSummary("1", "key1", "NAME1", "description 1", "owner 1", "", "", "PERSONAL", "", "", "", ""),
|
||||||
|
new WorkbasketSummary("2", "key2", "NAME2", "description 2", "owner 2", "", "", "GROUP", "", "", "", ""))
|
||||||
|
}, new Links({ 'href': 'url' }));
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'taskana-filter',
|
||||||
|
template: ''
|
||||||
|
})
|
||||||
|
export class FilterComponent {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
describe('DistributionTargetsComponent', () => {
|
describe('DistributionTargetsComponent', () => {
|
||||||
let component: DistributionTargetsComponent;
|
let component: DistributionTargetsComponent;
|
||||||
let fixture: ComponentFixture<DistributionTargetsComponent>;
|
let fixture: ComponentFixture<DistributionTargetsComponent>;
|
||||||
|
let workbasketService;
|
||||||
|
let workbasket = new Workbasket('1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }, { 'href': 'someurl' }, { 'href': 'someurl' }));
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [ DistributionTargetsComponent ]
|
imports: [AngularSvgIconModule, HttpClientModule, HttpModule, JsonpModule],
|
||||||
|
declarations: [DistributionTargetsComponent, SpinnerComponent, GeneralMessageModalComponent, FilterComponent, SelectWorkBasketPipe, IconTypeComponent],
|
||||||
|
providers: [WorkbasketService, AlertService]
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@ -16,10 +50,21 @@ describe('DistributionTargetsComponent', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture = TestBed.createComponent(DistributionTargetsComponent);
|
fixture = TestBed.createComponent(DistributionTargetsComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
|
component.workbasket = workbasket;
|
||||||
|
workbasketService = TestBed.get(WorkbasketService);
|
||||||
|
spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => {
|
||||||
|
return Observable.of(new WorkbasketSummaryResource(
|
||||||
|
{ 'workbaskets': new Array<WorkbasketSummary>(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' })))
|
||||||
|
})
|
||||||
|
spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => {
|
||||||
|
return Observable.of(new WorkbasketSummaryResource(
|
||||||
|
{ 'workbaskets': new Array<WorkbasketSummary>(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' })))
|
||||||
|
})
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
xit('should create', () => {
|
it('should create', () => {
|
||||||
expect(component).toBeTruthy();
|
expect(component).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, OnInit, Input } from '@angular/core';
|
||||||
import { Workbasket } from '../../../model/workbasket';
|
import { Workbasket } from '../../../model/workbasket';
|
||||||
import { WorkbasketSummary } from '../../../model/workbasketSummary';
|
import { WorkbasketSummary } from '../../../model/workbasket-summary';
|
||||||
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
|
||||||
import { FilterModel } from '../../../shared/filter/filter.component'
|
import { FilterModel } from '../../../shared/filter/filter.component'
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import { AlertService, AlertModel, AlertType } from '../../../services/alert.ser
|
||||||
|
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
import { element } from 'protractor';
|
import { element } from 'protractor';
|
||||||
|
import { WorkbasketSummaryResource } from '../../../model/workbasket-summary-resource';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'taskana-workbaskets-distribution-targets',
|
selector: 'taskana-workbaskets-distribution-targets',
|
||||||
|
@ -23,9 +24,10 @@ export class DistributionTargetsComponent implements OnInit {
|
||||||
distributionTargetsSubscription: Subscription;
|
distributionTargetsSubscription: Subscription;
|
||||||
workbasketSubscription: Subscription;
|
workbasketSubscription: Subscription;
|
||||||
workbasketFilterSubscription: Subscription;
|
workbasketFilterSubscription: Subscription;
|
||||||
distributionTargetsLeft: Array<WorkbasketSummary>;
|
distributionTargetsResource: WorkbasketSummaryResource;
|
||||||
distributionTargetsRight: Array<WorkbasketSummary>;
|
distributionTargetsLeft: Array<WorkbasketSummary> = [];
|
||||||
distributionTargetsSelected: Array<WorkbasketSummary>;
|
distributionTargetsRight: Array<WorkbasketSummary> = [];
|
||||||
|
distributionTargetsSelected: Array<WorkbasketSummary> = [];
|
||||||
|
|
||||||
|
|
||||||
filterBy: FilterModel = new FilterModel();
|
filterBy: FilterModel = new FilterModel();
|
||||||
|
@ -38,11 +40,12 @@ export class DistributionTargetsComponent implements OnInit {
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.requestInProgressLeft = true;
|
this.requestInProgressLeft = true;
|
||||||
this.requestInProgressRight = true;
|
this.requestInProgressRight = true;
|
||||||
this.distributionTargetsSubscription = this.workbasketService.getWorkBasketsDistributionTargets(this.workbasket.workbasketId).subscribe((distributionTargetsSelected: Array<WorkbasketSummary>) => {
|
this.distributionTargetsSubscription = this.workbasketService.getWorkBasketsDistributionTargets(this.workbasket._links.distributionTargets.href).subscribe((distributionTargetsSelectedResource: WorkbasketSummaryResource) => {
|
||||||
this.distributionTargetsSelected = distributionTargetsSelected;
|
this.distributionTargetsSelected = distributionTargetsSelectedResource._embedded ? distributionTargetsSelectedResource._embedded.workbaskets :[];
|
||||||
this.workbasketSubscription = this.workbasketService.getWorkBasketsSummary().subscribe((distributionTargetsAvailable: Array<WorkbasketSummary>) => {
|
this.workbasketSubscription = this.workbasketService.getWorkBasketsSummary().subscribe((distributionTargetsAvailable: WorkbasketSummaryResource) => {
|
||||||
this.distributionTargetsLeft = distributionTargetsAvailable;
|
this.distributionTargetsResource = distributionTargetsAvailable;
|
||||||
this.distributionTargetsRight = Object.assign([], distributionTargetsAvailable);
|
this.distributionTargetsLeft = Object.assign([], distributionTargetsAvailable._embedded.workbaskets);
|
||||||
|
this.distributionTargetsRight = Object.assign([], distributionTargetsAvailable._embedded.workbaskets);
|
||||||
this.requestInProgressLeft = false;
|
this.requestInProgressLeft = false;
|
||||||
this.requestInProgressRight = false;
|
this.requestInProgressRight = false;
|
||||||
});
|
});
|
||||||
|
@ -91,8 +94,8 @@ export class DistributionTargetsComponent implements OnInit {
|
||||||
listType ? this.requestInProgressRight = true : this.requestInProgressLeft = true;
|
listType ? this.requestInProgressRight = true : this.requestInProgressLeft = true;
|
||||||
this.workbasketFilterSubscription = this.workbasketService.getWorkBasketsSummary(true, undefined, undefined, undefined,
|
this.workbasketFilterSubscription = this.workbasketService.getWorkBasketsSummary(true, undefined, undefined, undefined,
|
||||||
this.filterBy.name, this.filterBy.description, undefined, this.filterBy.owner,
|
this.filterBy.name, this.filterBy.description, undefined, this.filterBy.owner,
|
||||||
this.filterBy.type, undefined, this.filterBy.key).subscribe(resultList => {
|
this.filterBy.type, undefined, this.filterBy.key).subscribe((resultList: WorkbasketSummaryResource) => {
|
||||||
listType ? this.distributionTargetsRight = resultList : this.distributionTargetsLeft = resultList;
|
listType ? this.distributionTargetsRight = resultList._embedded.workbaskets : this.distributionTargetsLeft = resultList._embedded.workbaskets;
|
||||||
listType ? this.requestInProgressRight = false : this.requestInProgressLeft = false;
|
listType ? this.requestInProgressRight = false : this.requestInProgressLeft = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ describe('InformationComponent', () => {
|
||||||
it('should reset requestInProgress after saving request is done', fakeAsync(() => {
|
it('should reset requestInProgress after saving request is done', fakeAsync(() => {
|
||||||
component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description',
|
component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description',
|
||||||
'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2',
|
'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2',
|
||||||
'orgLevel3', 'orgLevel4', new Array<Links>(new Links('self', 'someUrl')));
|
'orgLevel3', 'orgLevel4', new Links({'href': 'someUrl'}));
|
||||||
spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket));
|
spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket));
|
||||||
spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket));
|
spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket));
|
||||||
component.onSave();
|
component.onSave();
|
||||||
|
@ -89,7 +89,7 @@ describe('InformationComponent', () => {
|
||||||
it('should trigger triggerWorkBasketSaved method after saving request is done', () => {
|
it('should trigger triggerWorkBasketSaved method after saving request is done', () => {
|
||||||
component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description',
|
component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description',
|
||||||
'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2',
|
'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2',
|
||||||
'orgLevel3', 'orgLevel4', new Array<Links>(new Links('self', 'someUrl')));
|
'orgLevel3', 'orgLevel4', new Links({'href': 'someUrl'}));
|
||||||
spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket));
|
spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket));
|
||||||
spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket));
|
spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket));
|
||||||
component.onSave();
|
component.onSave();
|
||||||
|
|
|
@ -3,7 +3,6 @@ import { Workbasket } from '../../../model/workbasket';
|
||||||
import { WorkbasketService } from '../../../services/workbasket.service';
|
import { WorkbasketService } from '../../../services/workbasket.service';
|
||||||
import { IconTypeComponent, ICONTYPES } from '../../../shared/type-icon/icon-type.component';
|
import { IconTypeComponent, ICONTYPES } from '../../../shared/type-icon/icon-type.component';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
import { Utils } from '../../../shared/utils/utils';
|
|
||||||
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
|
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
|
||||||
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
|
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
|
||||||
|
|
||||||
|
@ -49,7 +48,7 @@ export class WorkbasketInformationComponent implements OnInit {
|
||||||
|
|
||||||
onSave() {
|
onSave() {
|
||||||
this.beforeRequest();
|
this.beforeRequest();
|
||||||
this.workbasketSubscription = (this.workbasketService.updateWorkbasket((Utils.getSelfRef(this.workbasket.links).href), this.workbasket).subscribe(
|
this.workbasketSubscription = (this.workbasketService.updateWorkbasket(this.workbasket._links.self.href, this.workbasket).subscribe(
|
||||||
workbasketUpdated => {
|
workbasketUpdated => {
|
||||||
this.afterRequest();
|
this.afterRequest();
|
||||||
this.workbasket = workbasketUpdated;
|
this.workbasket = workbasketUpdated;
|
||||||
|
|
|
@ -27,7 +27,9 @@ import { FormsModule } from '@angular/forms';
|
||||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { HttpModule } from '@angular/http';
|
import { HttpModule } from '@angular/http';
|
||||||
import { WorkbasketSummary } from '../../model/workbasketSummary';
|
import { WorkbasketSummary } from '../../model/workbasket-summary';
|
||||||
|
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
|
||||||
|
import { WorkbasketAccessItemsResource } from '../../model/workbasket-access-items-resource';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'taskana-filter',
|
selector: 'taskana-filter',
|
||||||
|
@ -44,6 +46,7 @@ describe('WorkbasketDetailsComponent', () => {
|
||||||
let debugElement;
|
let debugElement;
|
||||||
let masterAndDetailService;
|
let masterAndDetailService;
|
||||||
let workbasketService;
|
let workbasketService;
|
||||||
|
let workbasket = new Workbasket('1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }, { 'href': 'someurl' }, { 'href': 'someurl' }));
|
||||||
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
|
@ -64,10 +67,14 @@ describe('WorkbasketDetailsComponent', () => {
|
||||||
workbasketService = TestBed.get(WorkbasketService);
|
workbasketService = TestBed.get(WorkbasketService);
|
||||||
spyOn(masterAndDetailService, 'getShowDetail').and.callFake(() => { return Observable.of(true) })
|
spyOn(masterAndDetailService, 'getShowDetail').and.callFake(() => { return Observable.of(true) })
|
||||||
spyOn(workbasketService, 'getSelectedWorkBasket').and.callFake(() => { return Observable.of('id1') })
|
spyOn(workbasketService, 'getSelectedWorkBasket').and.callFake(() => { return Observable.of('id1') })
|
||||||
spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => { return Observable.of(new Array<WorkbasketSummary>(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Array<Links>(new Links('self', 'someurl'))))) })
|
spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => {
|
||||||
spyOn(workbasketService, 'getWorkBasket').and.callFake(() => { return Observable.of(new Workbasket('id1')) })
|
return Observable.of(new WorkbasketSummaryResource(
|
||||||
spyOn(workbasketService, 'getWorkBasketAccessItems').and.callFake(() => { return Observable.of(new Array<WorkbasketAccessItems>()) })
|
{ 'workbaskets': new Array<WorkbasketSummary>(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' })))
|
||||||
spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => { return Observable.of(new Array<WorkbasketSummary>()) })
|
})
|
||||||
|
|
||||||
|
spyOn(workbasketService, 'getWorkBasket').and.callFake(() => { return Observable.of(workbasket) })
|
||||||
|
spyOn(workbasketService, 'getWorkBasketAccessItems').and.callFake(() => { return Observable.of(new WorkbasketAccessItemsResource( {'accessItems': new Array<WorkbasketAccessItems>()}, new Links({'href': 'url'})) )})
|
||||||
|
spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => { return Observable.of(new WorkbasketSummaryResource( {'workbaskets': new Array<WorkbasketSummary>()}, new Links({'href': 'url'})) ) })
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -88,7 +95,7 @@ describe('WorkbasketDetailsComponent', () => {
|
||||||
expect(component.workbasket).toBeUndefined();
|
expect(component.workbasket).toBeUndefined();
|
||||||
expect(debugElement.querySelector('app-no-access')).toBeTruthy;
|
expect(debugElement.querySelector('app-no-access')).toBeTruthy;
|
||||||
|
|
||||||
component.workbasket = new Workbasket('id1');
|
component.workbasket = workbasket;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
expect(debugElement.querySelector('app-no-access')).toBeFalsy;
|
expect(debugElement.querySelector('app-no-access')).toBeFalsy;
|
||||||
|
@ -98,7 +105,7 @@ describe('WorkbasketDetailsComponent', () => {
|
||||||
|
|
||||||
it('should show back button with classes "visible-xs visible-sm hidden" when showDetail property is true', () => {
|
it('should show back button with classes "visible-xs visible-sm hidden" when showDetail property is true', () => {
|
||||||
|
|
||||||
component.workbasket = new Workbasket('id1');
|
component.workbasket = workbasket;
|
||||||
component.ngOnInit();
|
component.ngOnInit();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(debugElement.querySelector('.visible-xs.visible-sm.hidden > a').textContent).toBe('Back');
|
expect(debugElement.querySelector('.visible-xs.visible-sm.hidden > a').textContent).toBe('Back');
|
||||||
|
|
|
@ -5,8 +5,8 @@ import { MasterAndDetailService } from '../../services/master-and-detail.service
|
||||||
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
|
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
|
||||||
import { PermissionService } from '../../services/permission.service';
|
import { PermissionService } from '../../services/permission.service';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
import { WorkbasketSummary } from '../../model/workbasketSummary';
|
import { WorkbasketSummary } from '../../model/workbasket-summary';
|
||||||
import { Utils } from '../../shared/utils/utils';
|
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'workbasket-details',
|
selector: 'workbasket-details',
|
||||||
|
@ -70,10 +70,10 @@ export class WorkbasketDetailsComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getWorkbasketInformation(workbasketIdSelected: string) {
|
private getWorkbasketInformation(workbasketIdSelected: string) {
|
||||||
this.service.getWorkBasketsSummary().subscribe((workbasketSummary: Array<WorkbasketSummary>) => {
|
this.service.getWorkBasketsSummary().subscribe((workbasketSummary: WorkbasketSummaryResource) => {
|
||||||
let workbasketSummarySelected = this.getWorkbasketSummaryById(workbasketSummary, workbasketIdSelected);
|
let workbasketSummarySelected = this.getWorkbasketSummaryById(workbasketSummary._embedded.workbaskets, workbasketIdSelected);
|
||||||
if (workbasketSummarySelected && workbasketSummarySelected.links) {
|
if (workbasketSummarySelected && workbasketSummarySelected._links) {
|
||||||
this.workbasketSubscription = this.service.getWorkBasket(Utils.getSelfRef(workbasketSummarySelected.links).href).subscribe(workbasket => {
|
this.workbasketSubscription = this.service.getWorkBasket(workbasketSummarySelected._links.self.href).subscribe(workbasket => {
|
||||||
this.workbasket = workbasket;
|
this.workbasket = workbasket;
|
||||||
this.requestInProgress = false;
|
this.requestInProgress = false;
|
||||||
});
|
});
|
||||||
|
@ -81,7 +81,7 @@ export class WorkbasketDetailsComponent implements OnInit {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private getWorkbasketSummaryById(workbasketSummary: Array<WorkbasketSummary>, selectedId: string) {
|
private getWorkbasketSummaryById(workbasketSummary: Array<WorkbasketSummary>, selectedId: string): WorkbasketSummary {
|
||||||
return workbasketSummary.find((summary => summary.workbasketId === selectedId));
|
return workbasketSummary.find((summary => summary.workbasketId === selectedId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<taskana-spinner [isRunning]="requestInProgress" class="centered-horizontally"></taskana-spinner>
|
<taskana-spinner [isRunning]="requestInProgress" class="centered-horizontally"></taskana-spinner>
|
||||||
|
|
||||||
<li class="list-group-item" *ngFor="let workbasket of workbaskets" [class.active]="workbasket.workbasketId == selectedId"
|
<li class="list-group-item" *ngFor="let workbasket of workbaskets" [class.active]="workbasket.workbasketId == selectedId"
|
||||||
type="text" (click)="selectWorkbasket(workbasket.workbasketId)">
|
type="text" (click)="selectWorkbasket(workbasket.workbasketId)">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core
|
||||||
import { WorkbasketListComponent } from './workbasket-list.component';
|
import { WorkbasketListComponent } from './workbasket-list.component';
|
||||||
import { AngularSvgIconModule } from 'angular-svg-icon';
|
import { AngularSvgIconModule } from 'angular-svg-icon';
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { WorkbasketSummary } from '../../model/workbasketSummary';
|
import { WorkbasketSummary } from '../../model/workbasket-summary';
|
||||||
import { WorkbasketService } from '../../services/workbasket.service';
|
import { WorkbasketService } from '../../services/workbasket.service';
|
||||||
import { HttpModule } from '@angular/http';
|
import { HttpModule } from '@angular/http';
|
||||||
import { Router, Routes } from '@angular/router';
|
import { Router, Routes } from '@angular/router';
|
||||||
|
@ -15,6 +15,8 @@ import { SortComponent } from '../../shared/sort/sort.component';
|
||||||
import { IconTypeComponent } from '../../shared/type-icon/icon-type.component';
|
import { IconTypeComponent } from '../../shared/type-icon/icon-type.component';
|
||||||
import { RemoveNoneTypePipe } from '../../pipes/remove-none-type';
|
import { RemoveNoneTypePipe } from '../../pipes/remove-none-type';
|
||||||
import { MapValuesPipe } from '../../pipes/map-values.pipe';
|
import { MapValuesPipe } from '../../pipes/map-values.pipe';
|
||||||
|
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
|
||||||
|
import { Links } from '../../model/links';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -33,9 +35,11 @@ export class FilterComponent {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const workbasketSummary: WorkbasketSummary[] = [new WorkbasketSummary("1", "key1", "NAME1", "description 1", "owner 1", "", "", "PERSONAL", "", "", "", ""),
|
const workbasketSummaryResource: WorkbasketSummaryResource = new WorkbasketSummaryResource({
|
||||||
new WorkbasketSummary("2", "key2", "NAME2", "description 2", "owner 2", "", "", "GROUP", "", "", "", "")
|
'workbaskets': new Array<WorkbasketSummary>(
|
||||||
];
|
new WorkbasketSummary("1", "key1", "NAME1", "description 1", "owner 1", "", "", "PERSONAL", "", "", "", ""),
|
||||||
|
new WorkbasketSummary("2", "key2", "NAME2", "description 2", "owner 2", "", "", "GROUP", "", "", "", ""))
|
||||||
|
}, new Links({ 'href': 'url' }));
|
||||||
|
|
||||||
|
|
||||||
describe('WorkbasketListComponent', () => {
|
describe('WorkbasketListComponent', () => {
|
||||||
|
@ -67,7 +71,7 @@ describe('WorkbasketListComponent', () => {
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
debugElement = fixture.debugElement.nativeElement;
|
debugElement = fixture.debugElement.nativeElement;
|
||||||
workbasketService = TestBed.get(WorkbasketService);
|
workbasketService = TestBed.get(WorkbasketService);
|
||||||
spyOn(workbasketService, 'getWorkBasketsSummary').and.returnValue(Observable.of(workbasketSummary));
|
spyOn(workbasketService, 'getWorkBasketsSummary').and.returnValue(Observable.of(workbasketSummaryResource));
|
||||||
spyOn(workbasketService, 'getSelectedWorkBasket').and.returnValue(Observable.of('2'));
|
spyOn(workbasketService, 'getSelectedWorkBasket').and.returnValue(Observable.of('2'));
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@ -85,7 +89,7 @@ describe('WorkbasketListComponent', () => {
|
||||||
component.ngOnInit();
|
component.ngOnInit();
|
||||||
expect(workbasketService.getWorkBasketsSummary).toHaveBeenCalled();
|
expect(workbasketService.getWorkBasketsSummary).toHaveBeenCalled();
|
||||||
workbasketService.getWorkBasketsSummary().subscribe(value => {
|
workbasketService.getWorkBasketsSummary().subscribe(value => {
|
||||||
expect(value).toBe(workbasketSummary);
|
expect(value).toBe(workbasketSummaryResource);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Component, OnInit, EventEmitter } from '@angular/core';
|
import { Component, OnInit, EventEmitter } from '@angular/core';
|
||||||
import { WorkbasketSummary } from '../../model/workbasketSummary';
|
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
|
||||||
|
import { WorkbasketSummary } from '../../model/workbasket-summary';
|
||||||
import { WorkbasketService } from '../../services/workbasket.service'
|
import { WorkbasketService } from '../../services/workbasket.service'
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { FilterModel } from '../../shared/filter/filter.component'
|
import { FilterModel } from '../../shared/filter/filter.component'
|
||||||
|
@ -32,7 +33,7 @@ export class WorkbasketListComponent implements OnInit {
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.requestInProgress = true;
|
this.requestInProgress = true;
|
||||||
this.workBasketSummarySubscription = this.workbasketService.getWorkBasketsSummary().subscribe(resultList => {
|
this.workBasketSummarySubscription = this.workbasketService.getWorkBasketsSummary().subscribe(resultList => {
|
||||||
this.workbaskets = resultList;
|
this.workbaskets = resultList._embedded.workbaskets;
|
||||||
this.requestInProgress = false;
|
this.requestInProgress = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -79,11 +80,11 @@ export class WorkbasketListComponent implements OnInit {
|
||||||
|
|
||||||
private performRequest(): void {
|
private performRequest(): void {
|
||||||
this.requestInProgress = true;
|
this.requestInProgress = true;
|
||||||
this.workbaskets = undefined;
|
this.workbaskets = [];
|
||||||
this.workbasketServiceSubscription.add(this.workbasketService.getWorkBasketsSummary(true, this.sort.sortBy, this.sort.sortDirection, undefined,
|
this.workbasketServiceSubscription.add(this.workbasketService.getWorkBasketsSummary(true, this.sort.sortBy, this.sort.sortDirection, undefined,
|
||||||
this.filterBy.name, this.filterBy.description, undefined, this.filterBy.owner,
|
this.filterBy.name, this.filterBy.description, undefined, this.filterBy.owner,
|
||||||
this.filterBy.type, undefined, this.filterBy.key).subscribe(resultList => {
|
this.filterBy.type, undefined, this.filterBy.key).subscribe(resultList => {
|
||||||
this.workbaskets = resultList;
|
this.workbaskets = resultList._embedded? resultList._embedded.workbaskets:[];
|
||||||
this.requestInProgress = false;
|
this.requestInProgress = false;
|
||||||
this.unSelectWorkbasket();
|
this.unSelectWorkbasket();
|
||||||
}));
|
}));
|
||||||
|
|
Loading…
Reference in New Issue