From 751d77254b460a880a61139424e632da8e2a978b Mon Sep 17 00:00:00 2001 From: Martin Rojas Miguel Angel Date: Wed, 14 Mar 2018 10:58:00 +0100 Subject: [PATCH] TSK-380 Adapt application services for using HAL format --- admin/src/app/app-routing.module.ts | 3 +- admin/src/app/app.module.ts | 8 -- .../categoriesadministration.component.css | 0 .../categoriesadministration.component.html | 6 - ...categoriesadministration.component.spec.ts | 25 ---- .../categoriesadministration.component.ts | 23 --- .../app/categoriesadministration/category.ts | 9 -- .../categorieslist.component.css | 0 .../categorieslist.component.html | 12 -- .../categorieslist.component.spec.ts | 25 ---- .../categorieslist.component.ts | 31 ---- .../categoriestree.component.css | 0 .../categoriestree.component.html | 3 - .../categoriestree.component.spec.ts | 25 ---- .../categoriestree.component.ts | 87 ------------ .../categoryeditor.component.css | 0 .../categoryeditor.component.html | 38 ----- .../categoryeditor.component.spec.ts | 25 ---- .../categoryeditor.component.ts | 20 --- admin/src/app/model/links.ts | 5 +- .../model/workbasket-access-items-resource.ts | 9 ++ .../src/app/model/workbasket-access-items.ts | 2 +- .../app/model/workbasket-summary-resource.ts | 7 + ...basketSummary.ts => workbasket-summary.ts} | 5 +- admin/src/app/model/workbasket.ts | 50 +++---- .../src/app/pipes/seleted-workbasket.pipe.ts | 10 +- .../src/app/services/category.service.spec.ts | 15 -- admin/src/app/services/category.service.ts | 44 ------ admin/src/app/services/workbasket.service.ts | 133 +++++++++--------- .../app/shared/spinner/spinner.component.ts | 2 +- admin/src/app/shared/utils/utils.ts | 11 -- .../access-items.component.spec.ts | 27 +--- .../access-items/access-items.component.ts | 16 +-- .../distribution-targets.component.html | 2 +- .../distribution-targets.component.spec.ts | 51 ++++++- .../distribution-targets.component.ts | 31 ++-- .../workbasket-information.component.spec.ts | 4 +- .../workbasket-information.component.ts | 3 +- .../workbasket-details.component.spec.ts | 29 ++-- .../details/workbasket-details.component.ts | 14 +- .../list/workbasket-list.component.html | 1 + .../list/workbasket-list.component.spec.ts | 16 ++- .../list/workbasket-list.component.ts | 9 +- 43 files changed, 248 insertions(+), 588 deletions(-) delete mode 100644 admin/src/app/categoriesadministration/categoriesadministration.component.css delete mode 100644 admin/src/app/categoriesadministration/categoriesadministration.component.html delete mode 100644 admin/src/app/categoriesadministration/categoriesadministration.component.spec.ts delete mode 100644 admin/src/app/categoriesadministration/categoriesadministration.component.ts delete mode 100644 admin/src/app/categoriesadministration/category.ts delete mode 100644 admin/src/app/categorieslist/categorieslist.component.css delete mode 100644 admin/src/app/categorieslist/categorieslist.component.html delete mode 100644 admin/src/app/categorieslist/categorieslist.component.spec.ts delete mode 100644 admin/src/app/categorieslist/categorieslist.component.ts delete mode 100644 admin/src/app/categoriestree/categoriestree.component.css delete mode 100644 admin/src/app/categoriestree/categoriestree.component.html delete mode 100644 admin/src/app/categoriestree/categoriestree.component.spec.ts delete mode 100644 admin/src/app/categoriestree/categoriestree.component.ts delete mode 100644 admin/src/app/categoryeditor/categoryeditor.component.css delete mode 100644 admin/src/app/categoryeditor/categoryeditor.component.html delete mode 100644 admin/src/app/categoryeditor/categoryeditor.component.spec.ts delete mode 100644 admin/src/app/categoryeditor/categoryeditor.component.ts create mode 100644 admin/src/app/model/workbasket-access-items-resource.ts create mode 100644 admin/src/app/model/workbasket-summary-resource.ts rename admin/src/app/model/{workbasketSummary.ts => workbasket-summary.ts} (83%) delete mode 100644 admin/src/app/services/category.service.spec.ts delete mode 100644 admin/src/app/services/category.service.ts delete mode 100644 admin/src/app/shared/utils/utils.ts diff --git a/admin/src/app/app-routing.module.ts b/admin/src/app/app-routing.module.ts index 97d910c73..4e213827d 100644 --- a/admin/src/app/app-routing.module.ts +++ b/admin/src/app/app-routing.module.ts @@ -3,7 +3,6 @@ import { RouterModule, Routes } from '@angular/router'; import { AppComponent } from './app.component'; import { WorkbasketListComponent } from './workbasket/list/workbasket-list.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 { NoAccessComponent } from './workbasket/noAccess/no-access.component'; @@ -33,7 +32,7 @@ const appRoutes: Routes = [ children: [ { path: '', - component: CategoriesadministrationComponent, + component: WorkbasketListComponent, outlet: 'detail' } ] diff --git a/admin/src/app/app.module.ts b/admin/src/app/app.module.ts index 26c695af2..da96bfb60 100644 --- a/admin/src/app/app.module.ts +++ b/admin/src/app/app.module.ts @@ -17,10 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; */ import { AppComponent } from './app.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 { WorkbasketInformationComponent } from './workbasket/details/information/workbasket-information.component'; import { DistributionTargetsComponent } from './workbasket/details/distribution-targets/distribution-targets.component'; @@ -69,10 +65,6 @@ const MODULES = [ const DECLARATIONS = [ AppComponent, WorkbasketListComponent, - CategorieslistComponent, - CategoriestreeComponent, - CategoryeditorComponent, - CategoriesadministrationComponent, AccessItemsComponent, WorkbasketDetailsComponent, MasterAndDetailComponent, diff --git a/admin/src/app/categoriesadministration/categoriesadministration.component.css b/admin/src/app/categoriesadministration/categoriesadministration.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/admin/src/app/categoriesadministration/categoriesadministration.component.html b/admin/src/app/categoriesadministration/categoriesadministration.component.html deleted file mode 100644 index 5425f4bc2..000000000 --- a/admin/src/app/categoriesadministration/categoriesadministration.component.html +++ /dev/null @@ -1,6 +0,0 @@ -
- -
-
- -
\ No newline at end of file diff --git a/admin/src/app/categoriesadministration/categoriesadministration.component.spec.ts b/admin/src/app/categoriesadministration/categoriesadministration.component.spec.ts deleted file mode 100644 index 2974fd7cb..000000000 --- a/admin/src/app/categoriesadministration/categoriesadministration.component.spec.ts +++ /dev/null @@ -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; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ CategoriesadministrationComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(CategoriesadministrationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - xit('should be created', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/admin/src/app/categoriesadministration/categoriesadministration.component.ts b/admin/src/app/categoriesadministration/categoriesadministration.component.ts deleted file mode 100644 index 119572eef..000000000 --- a/admin/src/app/categoriesadministration/categoriesadministration.component.ts +++ /dev/null @@ -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; - } - -} diff --git a/admin/src/app/categoriesadministration/category.ts b/admin/src/app/categoriesadministration/category.ts deleted file mode 100644 index 827243fb6..000000000 --- a/admin/src/app/categoriesadministration/category.ts +++ /dev/null @@ -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) { } -} \ No newline at end of file diff --git a/admin/src/app/categorieslist/categorieslist.component.css b/admin/src/app/categorieslist/categorieslist.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/admin/src/app/categorieslist/categorieslist.component.html b/admin/src/app/categorieslist/categorieslist.component.html deleted file mode 100644 index 17ee98d02..000000000 --- a/admin/src/app/categorieslist/categorieslist.component.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - -
IDNameDescription
{{ category.id }}{{ category.name }}{{ category.description }}
diff --git a/admin/src/app/categorieslist/categorieslist.component.spec.ts b/admin/src/app/categorieslist/categorieslist.component.spec.ts deleted file mode 100644 index f22a5f319..000000000 --- a/admin/src/app/categorieslist/categorieslist.component.spec.ts +++ /dev/null @@ -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; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ CategorieslistComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(CategorieslistComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - xit('should be created', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/admin/src/app/categorieslist/categorieslist.component.ts b/admin/src/app/categorieslist/categorieslist.component.ts deleted file mode 100644 index 1895bc5cd..000000000 --- a/admin/src/app/categorieslist/categorieslist.component.ts +++ /dev/null @@ -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() {} - -} diff --git a/admin/src/app/categoriestree/categoriestree.component.css b/admin/src/app/categoriestree/categoriestree.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/admin/src/app/categoriestree/categoriestree.component.html b/admin/src/app/categoriestree/categoriestree.component.html deleted file mode 100644 index cfd223391..000000000 --- a/admin/src/app/categoriestree/categoriestree.component.html +++ /dev/null @@ -1,3 +0,0 @@ - - diff --git a/admin/src/app/categoriestree/categoriestree.component.spec.ts b/admin/src/app/categoriestree/categoriestree.component.spec.ts deleted file mode 100644 index 84149230b..000000000 --- a/admin/src/app/categoriestree/categoriestree.component.spec.ts +++ /dev/null @@ -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; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ CategoriestreeComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(CategoriestreeComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - xit('should be created', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/admin/src/app/categoriestree/categoriestree.component.ts b/admin/src/app/categoriestree/categoriestree.component.ts deleted file mode 100644 index 2d7ea181a..000000000 --- a/admin/src/app/categoriestree/categoriestree.component.ts +++ /dev/null @@ -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(); - - 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 = error); - } - -} diff --git a/admin/src/app/categoryeditor/categoryeditor.component.css b/admin/src/app/categoryeditor/categoryeditor.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/admin/src/app/categoryeditor/categoryeditor.component.html b/admin/src/app/categoryeditor/categoryeditor.component.html deleted file mode 100644 index 258f66980..000000000 --- a/admin/src/app/categoryeditor/categoryeditor.component.html +++ /dev/null @@ -1,38 +0,0 @@ -

Category Details of {{categorySelected?.name}} (ID: {{categorySelected?.id}})

-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- -
-
-
diff --git a/admin/src/app/categoryeditor/categoryeditor.component.spec.ts b/admin/src/app/categoryeditor/categoryeditor.component.spec.ts deleted file mode 100644 index 348cb96c6..000000000 --- a/admin/src/app/categoryeditor/categoryeditor.component.spec.ts +++ /dev/null @@ -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; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ CategoryeditorComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(CategoryeditorComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - xit('should be created', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/admin/src/app/categoryeditor/categoryeditor.component.ts b/admin/src/app/categoryeditor/categoryeditor.component.ts deleted file mode 100644 index 0155cfe09..000000000 --- a/admin/src/app/categoryeditor/categoryeditor.component.ts +++ /dev/null @@ -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; - -} diff --git a/admin/src/app/model/links.ts b/admin/src/app/model/links.ts index 99f6bddd5..96350513e 100644 --- a/admin/src/app/model/links.ts +++ b/admin/src/app/model/links.ts @@ -1,6 +1,7 @@ export class Links { constructor( - public rel: string, - public href: string, + public self: {'href': string}, + public distributionTargets: {'href': string} = undefined, + public accessItems: {'href': string} = undefined ){} } \ No newline at end of file diff --git a/admin/src/app/model/workbasket-access-items-resource.ts b/admin/src/app/model/workbasket-access-items-resource.ts new file mode 100644 index 000000000..c62af2a3f --- /dev/null +++ b/admin/src/app/model/workbasket-access-items-resource.ts @@ -0,0 +1,9 @@ +import { Links } from "./links"; +import { WorkbasketAccessItems } from "./workbasket-access-items"; + +export class WorkbasketAccessItemsResource { + constructor( + public _embedded: { 'accessItems': Array } = { 'accessItems': [] }, + public _links: Links = undefined + ) { } +} \ No newline at end of file diff --git a/admin/src/app/model/workbasket-access-items.ts b/admin/src/app/model/workbasket-access-items.ts index c7154ddf2..f938943a7 100644 --- a/admin/src/app/model/workbasket-access-items.ts +++ b/admin/src/app/model/workbasket-access-items.ts @@ -22,6 +22,6 @@ export class WorkbasketAccessItems { public permCustom10: boolean = false, public permCustom11: boolean = false, public permCustom12: boolean = false, - public links: Array = undefined + public _links: Links = undefined ) { } } \ No newline at end of file diff --git a/admin/src/app/model/workbasket-summary-resource.ts b/admin/src/app/model/workbasket-summary-resource.ts new file mode 100644 index 000000000..7876ef9ae --- /dev/null +++ b/admin/src/app/model/workbasket-summary-resource.ts @@ -0,0 +1,7 @@ +import { WorkbasketSummary } from './workbasket-summary'; +import { Links } from './links'; + +export class WorkbasketSummaryResource { + constructor(public _embedded: {'workbaskets': Array } = {'workbaskets': []}, public _links: Links = null) { + } +} \ No newline at end of file diff --git a/admin/src/app/model/workbasketSummary.ts b/admin/src/app/model/workbasket-summary.ts similarity index 83% rename from admin/src/app/model/workbasketSummary.ts rename to admin/src/app/model/workbasket-summary.ts index d04c0541e..ef5849336 100644 --- a/admin/src/app/model/workbasketSummary.ts +++ b/admin/src/app/model/workbasket-summary.ts @@ -1,6 +1,6 @@ import {Links} from './links'; -export class WorkbasketSummary { +export class WorkbasketSummary{ constructor( public workbasketId: string, public key: string, @@ -14,5 +14,6 @@ export class WorkbasketSummary { public orgLevel2: string, public orgLevel3: string, public orgLevel4: string, - public links: Array = undefined){} + public _links: Links = undefined){ + } } \ No newline at end of file diff --git a/admin/src/app/model/workbasket.ts b/admin/src/app/model/workbasket.ts index b272230cb..afd0e6071 100644 --- a/admin/src/app/model/workbasket.ts +++ b/admin/src/app/model/workbasket.ts @@ -1,6 +1,5 @@ -import { WorkbasketSummary } from './workbasketSummary'; import { Links } from './links'; -export class Workbasket { +export class Workbasket{ constructor( public workbasketId: string, public created: string = undefined, @@ -18,28 +17,29 @@ export class Workbasket { public orgLevel1: string = undefined, public orgLevel2: string = undefined, public orgLevel3: string = undefined, - public orgLevel4: string = undefined, - public links: Array = undefined){} + public orgLevel4: string = undefined, + public _links:Links = undefined) { + } - public static equals(org: Workbasket, comp: Workbasket): boolean { - if (org.workbasketId !== comp.workbasketId) { return false; } - if (org.created !== comp.created) { return false; } - if (org.key !== comp.key) { return false; } - if (org.domain !== comp.domain) { return false; } - if (org.type !== comp.type) { return false; } - if (org.modified !== comp.modified) { return false; } - if (org.name !== comp.name) { return false; } - if (org.description !== comp.description) { return false; } - if (org.owner !== comp.owner) { return false; } - if (org.custom1 !== comp.custom1) { return false; } - if (org.custom2 !== comp.custom2) { return false; } - if (org.custom3 !== comp.custom3) { return false; } - if (org.custom4 !== comp.custom4) { return false; } - if (org.orgLevel1 !== comp.orgLevel1) { return false; } - if (org.orgLevel2 !== comp.orgLevel2) { return false; } - if (org.orgLevel3 !== comp.orgLevel3) { return false; } - if (org.orgLevel4 !== comp.orgLevel4) { return false; } - - return true; - } + public static equals(org: Workbasket, comp: Workbasket): boolean { + if (org.workbasketId !== comp.workbasketId) { return false; } + if (org.created !== comp.created) { return false; } + if (org.key !== comp.key) { return false; } + if (org.domain !== comp.domain) { return false; } + if (org.type !== comp.type) { return false; } + if (org.modified !== comp.modified) { return false; } + if (org.name !== comp.name) { return false; } + if (org.description !== comp.description) { return false; } + if (org.owner !== comp.owner) { return false; } + if (org.custom1 !== comp.custom1) { return false; } + if (org.custom2 !== comp.custom2) { return false; } + if (org.custom3 !== comp.custom3) { return false; } + if (org.custom4 !== comp.custom4) { return false; } + if (org.orgLevel1 !== comp.orgLevel1) { return false; } + if (org.orgLevel2 !== comp.orgLevel2) { return false; } + if (org.orgLevel3 !== comp.orgLevel3) { return false; } + if (org.orgLevel4 !== comp.orgLevel4) { return false; } + + return true; + } } \ No newline at end of file diff --git a/admin/src/app/pipes/seleted-workbasket.pipe.ts b/admin/src/app/pipes/seleted-workbasket.pipe.ts index 5e6a9152d..1924b3ead 100644 --- a/admin/src/app/pipes/seleted-workbasket.pipe.ts +++ b/admin/src/app/pipes/seleted-workbasket.pipe.ts @@ -2,20 +2,20 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'selectWorkbaskets' }) export class SelectWorkBasketPipe implements PipeTransform { - transform(originArray: any, arg0: any, arg1: any): Object[] { + transform(originArray: any, selectionArray: any, arg1: any): Object[] { let returnArray = []; if (!originArray) { return returnArray; } + for (let index = originArray.length - 1; index >= 0; index--) { - if ((arg1 && !arg0.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId})) || - !arg1 && arg0.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId})) { + if ((arg1 && !selectionArray.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId })) || + !arg1 && selectionArray.some(elementToRemove => { return originArray[index].workbasketId === elementToRemove.workbasketId })) { originArray.splice(index, 1); } } - returnArray = originArray; + returnArray = originArray; return returnArray; } - } \ No newline at end of file diff --git a/admin/src/app/services/category.service.spec.ts b/admin/src/app/services/category.service.spec.ts deleted file mode 100644 index a4d27320f..000000000 --- a/admin/src/app/services/category.service.spec.ts +++ /dev/null @@ -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(); - })); -}); diff --git a/admin/src/app/services/category.service.ts b/admin/src/app/services/category.service.ts deleted file mode 100644 index 8712074d7..000000000 --- a/admin/src/app/services/category.service.ts +++ /dev/null @@ -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 { - 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 }); - } -} diff --git a/admin/src/app/services/workbasket.service.ts b/admin/src/app/services/workbasket.service.ts index 8f26e8d09..da791e69f 100644 --- a/admin/src/app/services/workbasket.service.ts +++ b/admin/src/app/services/workbasket.service.ts @@ -1,12 +1,15 @@ import { Injectable } from '@angular/core'; 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 { WorkbasketAccessItems } from '../model/workbasket-access-items'; import { environment } from '../../environments/environment'; import { Direction } from '../shared/sort/sort.component'; import { Observable } from 'rxjs/Observable'; 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() export class WorkbasketService { @@ -35,12 +38,12 @@ export class WorkbasketService { httpOptions = { headers: new HttpHeaders({ - 'Content-Type': 'application/json', + 'Content-Type': 'application/hal+json', 'Authorization': 'Basic VEVBTUxFQURfMTpURUFNTEVBRF8x' }) }; - private workbasketSummaryRef: Observable; + private workbasketSummaryRef: Observable; //#region "REST calls" // GET @@ -55,11 +58,11 @@ export class WorkbasketService { type: string = undefined, key: string = undefined, keyLike: string = undefined, - requiredPermission: string = undefined): Observable { + requiredPermission: string = undefined): Observable { if (this.workbasketSummaryRef && !forceRequest) { return this.workbasketSummaryRef; } - return this.httpClient.get(`${environment.taskanaRestUrl}/v1/workbaskets/${this.getWorkbasketSummaryQueryParameters(sortBy, order, name, + return this.workbasketSummaryRef = this.httpClient.get(`${environment.taskanaRestUrl}/v1/workbaskets/${this.getWorkbasketSummaryQueryParameters(sortBy, order, name, nameLike, descLike, owner, ownerLike, type, key, keyLike, requiredPermission)}`, this.httpOptions); } @@ -79,16 +82,16 @@ export class WorkbasketService { .catch(this.handleError); } // DELETE - deleteWorkbasket(id: string) { - return this.httpClient.delete(environment.taskanaRestUrl + '/v1/workbaskets/' + id, this.httpOptions); + deleteWorkbasket(url: string) { + return this.httpClient.delete(url, this.httpOptions); } // GET - getWorkBasketAccessItems(id: String): Observable { - return this.httpClient.get(environment.taskanaRestUrl + '/v1/workbaskets/' + id + '/workbasketAccessItems', this.httpOptions); + getWorkBasketAccessItems(url: string): Observable { + return this.httpClient.get(url, this.httpOptions); } // POST - createWorkBasketAccessItem(workbasketAccessItem: WorkbasketAccessItems): Observable { - return this.httpClient.post(environment.taskanaRestUrl + '/v1/workbaskets/workbasketAccessItems', workbasketAccessItem, this.httpOptions); + createWorkBasketAccessItem(url: string, workbasketAccessItem: WorkbasketAccessItems): Observable { + return this.httpClient.post(url , workbasketAccessItem, this.httpOptions); } // PUT updateWorkBasketAccessItem(url: string, workbasketAccessItem: Array): Observable { @@ -97,75 +100,75 @@ export class WorkbasketService { this.httpOptions); } // GET - getWorkBasketsDistributionTargets(id: String): Observable { - return this.httpClient.get(environment.taskanaRestUrl + '/v1/workbaskets/' + id + '/distributiontargets', this.httpOptions); + getWorkBasketsDistributionTargets(url: string): Observable { + return this.httpClient.get(url, this.httpOptions); } - -//#endregion -//#region "Service extras" -selectWorkBasket(id: string) { - this.workBasketSelected.next(id); -} + //#endregion -getSelectedWorkBasket(): Observable < string > { - return this.workBasketSelected.asObservable(); -} + //#region "Service extras" + selectWorkBasket(id: string) { + this.workBasketSelected.next(id); + } -triggerWorkBasketSaved() { - this.workBasketSaved.next(Date.now()); -} + getSelectedWorkBasket(): Observable { + return this.workBasketSelected.asObservable(); + } -workbasketSavedTriggered(): Observable < number > { - return this.workBasketSaved.asObservable(); -} + triggerWorkBasketSaved() { + this.workBasketSaved.next(Date.now()); + } + + workbasketSavedTriggered(): Observable { + return this.workBasketSaved.asObservable(); + } //#endregion //#region private private getWorkbasketSummaryQueryParameters(sortBy: string, - order: string, - name: string, - nameLike: string, - descLike: string, - owner: string, - ownerLike: string, - type: string, - key: string, - keyLike: string, - requiredPermission: string): string { - let query: string = '?'; - query += sortBy ? `${this.SORTBY}=${sortBy}&` : ''; - query += order ? `${this.ORDER}=${order}&` : ''; - query += name ? `${this.NAME}=${name}&` : ''; - query += nameLike ? `${this.NAMELIKE}=${nameLike}&` : ''; - query += descLike ? `${this.DESCLIKE}=${descLike}&` : ''; - query += owner ? `${this.OWNER}=${owner}&` : ''; - query += ownerLike ? `${this.OWNERLIKE}=${ownerLike}&` : ''; - query += type ? `${this.TYPE}=${type}&` : ''; - query += key ? `${this.KEY}=${key}&` : ''; - query += keyLike ? `${this.KEYLIKE}=${keyLike}&` : ''; - query += requiredPermission ? `${this.REQUIREDPERMISSION}=${requiredPermission}&` : ''; + order: string, + name: string, + nameLike: string, + descLike: string, + owner: string, + ownerLike: string, + type: string, + key: string, + keyLike: string, + requiredPermission: string): string { + let query: string = '?'; + query += sortBy ? `${this.SORTBY}=${sortBy}&` : ''; + query += order ? `${this.ORDER}=${order}&` : ''; + query += name ? `${this.NAME}=${name}&` : ''; + query += nameLike ? `${this.NAMELIKE}=${nameLike}&` : ''; + query += descLike ? `${this.DESCLIKE}=${descLike}&` : ''; + query += owner ? `${this.OWNER}=${owner}&` : ''; + query += ownerLike ? `${this.OWNERLIKE}=${ownerLike}&` : ''; + query += type ? `${this.TYPE}=${type}&` : ''; + query += key ? `${this.KEY}=${key}&` : ''; + query += keyLike ? `${this.KEYLIKE}=${keyLike}&` : ''; + query += requiredPermission ? `${this.REQUIREDPERMISSION}=${requiredPermission}&` : ''; - if (query.lastIndexOf('&') === query.length - 1) { - query = query.slice(0, query.lastIndexOf('&')) + if (query.lastIndexOf('&') === query.length - 1) { + query = query.slice(0, query.lastIndexOf('&')) + } + return query; } - return query; -} 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 = JSON.stringify(body); - errMsg = `${error.status} - ${error.statusText || ''} ${err}`; - } else { - errMsg = error.message ? error.message : error.toString(); + // 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 = JSON.stringify(body); + errMsg = `${error.status} - ${error.statusText || ''} ${err}`; + } else { + errMsg = error.message ? error.message : error.toString(); + } + console.error(errMsg); + return Observable.throw(errMsg); } - console.error(errMsg); - return Observable.throw(errMsg); -} //#endregion } diff --git a/admin/src/app/shared/spinner/spinner.component.ts b/admin/src/app/shared/spinner/spinner.component.ts index 24535591d..58ba2d789 100644 --- a/admin/src/app/shared/spinner/spinner.component.ts +++ b/admin/src/app/shared/spinner/spinner.component.ts @@ -13,7 +13,7 @@ export class SpinnerComponent { isDelayedRunning: boolean = false; @Input() - delay: number = 300; + delay: number = 100; @Input() set isRunning(value: boolean) { diff --git a/admin/src/app/shared/utils/utils.ts b/admin/src/app/shared/utils/utils.ts deleted file mode 100644 index d86f5531f..000000000 --- a/admin/src/app/shared/utils/utils.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Links} from '../../model/links'; - -export class Utils { - static getSelfRef(links: Array) { - return links.find(l => l.rel === 'self'); - } - - static getTagLinkRef(links: Array, tag: string) { - return links.find(l => l.rel === tag ); - } -} \ No newline at end of file diff --git a/admin/src/app/workbasket/details/access-items/access-items.component.spec.ts b/admin/src/app/workbasket/details/access-items/access-items.component.spec.ts index 9f465f471..5c104cc14 100644 --- a/admin/src/app/workbasket/details/access-items/access-items.component.spec.ts +++ b/admin/src/app/workbasket/details/access-items/access-items.component.spec.ts @@ -12,6 +12,7 @@ import { Links } from '../../../model/links'; import { Observable } from 'rxjs/Observable'; import { AccessItemsComponent } from './access-items.component'; import { WorkbasketAccessItems } from '../../../model/workbasket-access-items'; +import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource'; describe('AccessItemsComponent', () => { let component: AccessItemsComponent; @@ -31,11 +32,14 @@ describe('AccessItemsComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(AccessItemsComponent); component = fixture.componentInstance; - component.workbasket = new Workbasket('1') + component.workbasket = new Workbasket('1','','','','','','','','','','','','','','','', '', new Links(undefined,undefined, {'href': 'someurl' })); workbasketService = TestBed.get(WorkbasketService); alertService = TestBed.get(AlertService); - spyOn(workbasketService, 'getWorkBasketAccessItems').and.returnValue(Observable.of(new Array(new WorkbasketAccessItems('id1', '1', 'accessID1', false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, new Array(new Links('setWorkbasketAccessItems', ''))), - new WorkbasketAccessItems('id2', '1', 'accessID2')))); + spyOn(workbasketService, 'getWorkBasketAccessItems').and.returnValue(Observable.of(new WorkbasketAccessItemsResource( + {'accessItems': new Array( + 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(alertService, 'triggerAlert').and.returnValue(Observable.of(true)), debugElement = fixture.debugElement.nativeElement; @@ -61,23 +65,6 @@ describe('AccessItemsComponent', () => { 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', () => { expect(debugElement.querySelectorAll('#table-access-items > tbody > tr').length).toBe(2); debugElement.querySelectorAll('#table-access-items > tbody > tr')[0].querySelector('td > button').click(); diff --git a/admin/src/app/workbasket/details/access-items/access-items.component.ts b/admin/src/app/workbasket/details/access-items/access-items.component.ts index 9fe55a368..8bef081c5 100644 --- a/admin/src/app/workbasket/details/access-items/access-items.component.ts +++ b/admin/src/app/workbasket/details/access-items/access-items.component.ts @@ -1,12 +1,12 @@ import { Component, OnInit, Input, AfterViewInit } from '@angular/core'; import { Subscription } from 'rxjs'; -import { Utils } from '../../../shared/utils/utils'; import { Workbasket } from '../../../model/workbasket'; import { WorkbasketAccessItems } from '../../../model/workbasket-access-items'; import { WorkbasketService } from '../../../services/workbasket.service'; import { AlertService, AlertModel, AlertType } from '../../../services/alert.service'; +import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource'; declare var $: any; @@ -20,6 +20,7 @@ export class AccessItemsComponent implements OnInit { @Input() workbasket: Workbasket; + accessItemsResource: WorkbasketAccessItemsResource; accessItems: Array; accessItemsClone: Array; accessItemsResetClone: Array; @@ -33,8 +34,9 @@ export class AccessItemsComponent implements OnInit { constructor(private workbasketService: WorkbasketService, private alertService: AlertService) { } ngOnInit() { - this.accessItemsubscription = this.workbasketService.getWorkBasketAccessItems(this.workbasket.workbasketId).subscribe( (accessItems: Array) =>{ - this.accessItems = accessItems; + this.accessItemsubscription = this.workbasketService.getWorkBasketAccessItems(this.workbasket._links.accessItems.href).subscribe( (accessItemsResource: WorkbasketAccessItemsResource) =>{ + this.accessItemsResource = accessItemsResource; + this.accessItems = accessItemsResource._embedded.accessItems; this.accessItemsClone = this.cloneAccessItems(this.accessItems); this.accessItemsResetClone = this.cloneAccessItems(this.accessItems); }) @@ -59,11 +61,7 @@ export class AccessItemsComponent implements OnInit { onSave(): boolean { this.requestInProgress = true; - if(!this.accessItems[0].links){ - return; - } - - this.workbasketService.updateWorkBasketAccessItem(Utils.getTagLinkRef(this.accessItems[0].links, 'setWorkbasketAccessItems').href, this.accessItems).subscribe(response =>{ + this.workbasketService.updateWorkBasketAccessItem(this.accessItemsResource._links.self.href + '/', this.accessItems).subscribe(response =>{ this.accessItemsClone = 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`)); @@ -72,8 +70,10 @@ export class AccessItemsComponent implements OnInit { }, error => { this.modalErrorMessage = error.message; + this.requestInProgress = false; return false; }) + return false; } setValue() { debugger; } diff --git a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.html b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.html index 8a80c7e36..b6a1e1558 100644 --- a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.html +++ b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.html @@ -80,7 +80,7 @@
  • + [class.selected]="distributionTarget.select" type="text" (click)="distributionTarget.select = !distributionTarget.select">
    diff --git a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.spec.ts b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.spec.ts index d125829ab..45951b219 100644 --- a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.spec.ts +++ b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.spec.ts @@ -1,25 +1,70 @@ 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 { 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( + 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', () => { let component: DistributionTargetsComponent; let fixture: ComponentFixture; + let workbasketService; + let workbasket = new Workbasket('1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }, { 'href': 'someurl' }, { 'href': 'someurl' })); beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ DistributionTargetsComponent ] + imports: [AngularSvgIconModule, HttpClientModule, HttpModule, JsonpModule], + declarations: [DistributionTargetsComponent, SpinnerComponent, GeneralMessageModalComponent, FilterComponent, SelectWorkBasketPipe, IconTypeComponent], + providers: [WorkbasketService, AlertService] }) - .compileComponents(); + .compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(DistributionTargetsComponent); component = fixture.componentInstance; + component.workbasket = workbasket; + workbasketService = TestBed.get(WorkbasketService); + spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => { + return Observable.of(new WorkbasketSummaryResource( + { 'workbaskets': new Array(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' }))) + }) + spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => { + return Observable.of(new WorkbasketSummaryResource( + { 'workbaskets': new Array(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' }))) + }) + fixture.detectChanges(); }); - xit('should create', () => { + it('should create', () => { expect(component).toBeTruthy(); }); }); diff --git a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.ts b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.ts index c4a828585..c65f583a7 100644 --- a/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.ts +++ b/admin/src/app/workbasket/details/distribution-targets/distribution-targets.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit, Input } from '@angular/core'; import { Workbasket } from '../../../model/workbasket'; -import { WorkbasketSummary } from '../../../model/workbasketSummary'; +import { WorkbasketSummary } from '../../../model/workbasket-summary'; import { WorkbasketAccessItems } from '../../../model/workbasket-access-items'; import { FilterModel } from '../../../shared/filter/filter.component' @@ -9,6 +9,7 @@ import { AlertService, AlertModel, AlertType } from '../../../services/alert.ser import { Subscription } from 'rxjs'; import { element } from 'protractor'; +import { WorkbasketSummaryResource } from '../../../model/workbasket-summary-resource'; @Component({ selector: 'taskana-workbaskets-distribution-targets', @@ -23,9 +24,10 @@ export class DistributionTargetsComponent implements OnInit { distributionTargetsSubscription: Subscription; workbasketSubscription: Subscription; workbasketFilterSubscription: Subscription; - distributionTargetsLeft: Array; - distributionTargetsRight: Array; - distributionTargetsSelected: Array; + distributionTargetsResource: WorkbasketSummaryResource; + distributionTargetsLeft: Array = []; + distributionTargetsRight: Array = []; + distributionTargetsSelected: Array = []; filterBy: FilterModel = new FilterModel(); @@ -38,14 +40,15 @@ export class DistributionTargetsComponent implements OnInit { ngOnInit() { this.requestInProgressLeft = true; this.requestInProgressRight = true; - this.distributionTargetsSubscription = this.workbasketService.getWorkBasketsDistributionTargets(this.workbasket.workbasketId).subscribe((distributionTargetsSelected: Array) => { - this.distributionTargetsSelected = distributionTargetsSelected; - this.workbasketSubscription = this.workbasketService.getWorkBasketsSummary().subscribe((distributionTargetsAvailable: Array) => { - this.distributionTargetsLeft = distributionTargetsAvailable; - this.distributionTargetsRight = Object.assign([], distributionTargetsAvailable); - this.requestInProgressLeft = false; - this.requestInProgressRight = false; - }); + this.distributionTargetsSubscription = this.workbasketService.getWorkBasketsDistributionTargets(this.workbasket._links.distributionTargets.href).subscribe((distributionTargetsSelectedResource: WorkbasketSummaryResource) => { + this.distributionTargetsSelected = distributionTargetsSelectedResource._embedded ? distributionTargetsSelectedResource._embedded.workbaskets :[]; + this.workbasketSubscription = this.workbasketService.getWorkBasketsSummary().subscribe((distributionTargetsAvailable: WorkbasketSummaryResource) => { + this.distributionTargetsResource = distributionTargetsAvailable; + this.distributionTargetsLeft = Object.assign([], distributionTargetsAvailable._embedded.workbaskets); + this.distributionTargetsRight = Object.assign([], distributionTargetsAvailable._embedded.workbaskets); + this.requestInProgressLeft = false; + this.requestInProgressRight = false; + }); }) } @@ -91,8 +94,8 @@ export class DistributionTargetsComponent implements OnInit { listType ? this.requestInProgressRight = true : this.requestInProgressLeft = true; this.workbasketFilterSubscription = this.workbasketService.getWorkBasketsSummary(true, undefined, undefined, undefined, this.filterBy.name, this.filterBy.description, undefined, this.filterBy.owner, - this.filterBy.type, undefined, this.filterBy.key).subscribe(resultList => { - listType ? this.distributionTargetsRight = resultList : this.distributionTargetsLeft = resultList; + this.filterBy.type, undefined, this.filterBy.key).subscribe((resultList: WorkbasketSummaryResource) => { + listType ? this.distributionTargetsRight = resultList._embedded.workbaskets : this.distributionTargetsLeft = resultList._embedded.workbaskets; listType ? this.requestInProgressRight = false : this.requestInProgressLeft = false; }); diff --git a/admin/src/app/workbasket/details/information/workbasket-information.component.spec.ts b/admin/src/app/workbasket/details/information/workbasket-information.component.spec.ts index bc79f7b16..90d783091 100644 --- a/admin/src/app/workbasket/details/information/workbasket-information.component.spec.ts +++ b/admin/src/app/workbasket/details/information/workbasket-information.component.spec.ts @@ -76,7 +76,7 @@ describe('InformationComponent', () => { it('should reset requestInProgress after saving request is done', fakeAsync(() => { component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description', 'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2', - 'orgLevel3', 'orgLevel4', new Array(new Links('self', 'someUrl'))); + 'orgLevel3', 'orgLevel4', new Links({'href': 'someUrl'})); spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket)); spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket)); component.onSave(); @@ -89,7 +89,7 @@ describe('InformationComponent', () => { it('should trigger triggerWorkBasketSaved method after saving request is done', () => { component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', 'type', 'modified', 'name', 'description', 'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2', - 'orgLevel3', 'orgLevel4', new Array(new Links('self', 'someUrl'))); + 'orgLevel3', 'orgLevel4', new Links({'href': 'someUrl'})); spyOn(workbasketService, 'updateWorkbasket').and.returnValue(Observable.of(component.workbasket)); spyOn(workbasketService, 'triggerWorkBasketSaved').and.returnValue(Observable.of(component.workbasket)); component.onSave(); diff --git a/admin/src/app/workbasket/details/information/workbasket-information.component.ts b/admin/src/app/workbasket/details/information/workbasket-information.component.ts index 0c9f9efda..e5fa189eb 100644 --- a/admin/src/app/workbasket/details/information/workbasket-information.component.ts +++ b/admin/src/app/workbasket/details/information/workbasket-information.component.ts @@ -3,7 +3,6 @@ import { Workbasket } from '../../../model/workbasket'; import { WorkbasketService } from '../../../services/workbasket.service'; import { IconTypeComponent, ICONTYPES } from '../../../shared/type-icon/icon-type.component'; import { Subscription } from 'rxjs'; -import { Utils } from '../../../shared/utils/utils'; import { AlertService, AlertModel, AlertType } from '../../../services/alert.service'; import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router'; @@ -49,7 +48,7 @@ export class WorkbasketInformationComponent implements OnInit { onSave() { 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 => { this.afterRequest(); this.workbasket = workbasketUpdated; diff --git a/admin/src/app/workbasket/details/workbasket-details.component.spec.ts b/admin/src/app/workbasket/details/workbasket-details.component.spec.ts index 61f60a7dd..4e3a4c91b 100644 --- a/admin/src/app/workbasket/details/workbasket-details.component.spec.ts +++ b/admin/src/app/workbasket/details/workbasket-details.component.spec.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { async, ComponentFixture, TestBed, } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, } from '@angular/core/testing'; import { WorkbasketDetailsComponent } from './workbasket-details.component'; import { NoAccessComponent } from '../noAccess/no-access.component'; import { WorkbasketInformationComponent } from './information/workbasket-information.component'; @@ -27,11 +27,13 @@ import { FormsModule } from '@angular/forms'; import { AngularSvgIconModule } from 'angular-svg-icon'; import { HttpClientModule } from '@angular/common/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({ - selector: 'taskana-filter', - template: '' + selector: 'taskana-filter', + template: '' }) export class FilterComponent { @@ -44,7 +46,8 @@ describe('WorkbasketDetailsComponent', () => { let debugElement; let masterAndDetailService; let workbasketService; - + let workbasket = new Workbasket('1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }, { 'href': 'someurl' }, { 'href': 'someurl' })); + beforeEach(async(() => { TestBed.configureTestingModule({ @@ -64,10 +67,14 @@ describe('WorkbasketDetailsComponent', () => { workbasketService = TestBed.get(WorkbasketService); spyOn(masterAndDetailService, 'getShowDetail').and.callFake(() => { return Observable.of(true) }) spyOn(workbasketService, 'getSelectedWorkBasket').and.callFake(() => { return Observable.of('id1') }) - spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => { return Observable.of(new Array(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Array(new Links('self', 'someurl'))))) }) - spyOn(workbasketService, 'getWorkBasket').and.callFake(() => { return Observable.of(new Workbasket('id1')) }) - spyOn(workbasketService, 'getWorkBasketAccessItems').and.callFake(() => { return Observable.of(new Array()) }) - spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => { return Observable.of(new Array()) }) + spyOn(workbasketService, 'getWorkBasketsSummary').and.callFake(() => { + return Observable.of(new WorkbasketSummaryResource( + { 'workbaskets': new Array(new WorkbasketSummary('id1', '', '', '', '', '', '', '', '', '', '', '', new Links({ 'href': 'someurl' }))) }, new Links({ 'href': 'someurl' }))) + }) + + spyOn(workbasketService, 'getWorkBasket').and.callFake(() => { return Observable.of(workbasket) }) + spyOn(workbasketService, 'getWorkBasketAccessItems').and.callFake(() => { return Observable.of(new WorkbasketAccessItemsResource( {'accessItems': new Array()}, new Links({'href': 'url'})) )}) + spyOn(workbasketService, 'getWorkBasketsDistributionTargets').and.callFake(() => { return Observable.of(new WorkbasketSummaryResource( {'workbaskets': new Array()}, new Links({'href': 'url'})) ) }) }); @@ -88,7 +95,7 @@ describe('WorkbasketDetailsComponent', () => { expect(component.workbasket).toBeUndefined(); expect(debugElement.querySelector('app-no-access')).toBeTruthy; - component.workbasket = new Workbasket('id1'); + component.workbasket = workbasket; fixture.detectChanges(); 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', () => { - component.workbasket = new Workbasket('id1'); + component.workbasket = workbasket; component.ngOnInit(); fixture.detectChanges(); expect(debugElement.querySelector('.visible-xs.visible-sm.hidden > a').textContent).toBe('Back'); diff --git a/admin/src/app/workbasket/details/workbasket-details.component.ts b/admin/src/app/workbasket/details/workbasket-details.component.ts index f21587b5f..6c2ba22ec 100644 --- a/admin/src/app/workbasket/details/workbasket-details.component.ts +++ b/admin/src/app/workbasket/details/workbasket-details.component.ts @@ -5,8 +5,8 @@ import { MasterAndDetailService } from '../../services/master-and-detail.service import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router'; import { PermissionService } from '../../services/permission.service'; import { Subscription } from 'rxjs'; -import { WorkbasketSummary } from '../../model/workbasketSummary'; -import { Utils } from '../../shared/utils/utils'; +import { WorkbasketSummary } from '../../model/workbasket-summary'; +import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource'; @Component({ selector: 'workbasket-details', @@ -70,10 +70,10 @@ export class WorkbasketDetailsComponent implements OnInit { } private getWorkbasketInformation(workbasketIdSelected: string) { - this.service.getWorkBasketsSummary().subscribe((workbasketSummary: Array) => { - let workbasketSummarySelected = this.getWorkbasketSummaryById(workbasketSummary, workbasketIdSelected); - if (workbasketSummarySelected && workbasketSummarySelected.links) { - this.workbasketSubscription = this.service.getWorkBasket(Utils.getSelfRef(workbasketSummarySelected.links).href).subscribe(workbasket => { + this.service.getWorkBasketsSummary().subscribe((workbasketSummary: WorkbasketSummaryResource) => { + let workbasketSummarySelected = this.getWorkbasketSummaryById(workbasketSummary._embedded.workbaskets, workbasketIdSelected); + if (workbasketSummarySelected && workbasketSummarySelected._links) { + this.workbasketSubscription = this.service.getWorkBasket(workbasketSummarySelected._links.self.href).subscribe(workbasket => { this.workbasket = workbasket; this.requestInProgress = false; }); @@ -81,7 +81,7 @@ export class WorkbasketDetailsComponent implements OnInit { }); } - private getWorkbasketSummaryById(workbasketSummary: Array, selectedId: string) { + private getWorkbasketSummaryById(workbasketSummary: Array, selectedId: string): WorkbasketSummary { return workbasketSummary.find((summary => summary.workbasketId === selectedId)); } diff --git a/admin/src/app/workbasket/list/workbasket-list.component.html b/admin/src/app/workbasket/list/workbasket-list.component.html index c8387b9a2..2875a6e99 100644 --- a/admin/src/app/workbasket/list/workbasket-list.component.html +++ b/admin/src/app/workbasket/list/workbasket-list.component.html @@ -34,6 +34,7 @@
  • +
  • diff --git a/admin/src/app/workbasket/list/workbasket-list.component.spec.ts b/admin/src/app/workbasket/list/workbasket-list.component.spec.ts index 7da12c837..1adc9b83b 100644 --- a/admin/src/app/workbasket/list/workbasket-list.component.spec.ts +++ b/admin/src/app/workbasket/list/workbasket-list.component.spec.ts @@ -3,7 +3,7 @@ import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core import { WorkbasketListComponent } from './workbasket-list.component'; import { AngularSvgIconModule } from 'angular-svg-icon'; import { HttpClientModule } from '@angular/common/http'; -import { WorkbasketSummary } from '../../model/workbasketSummary'; +import { WorkbasketSummary } from '../../model/workbasket-summary'; import { WorkbasketService } from '../../services/workbasket.service'; import { HttpModule } from '@angular/http'; 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 { RemoveNoneTypePipe } from '../../pipes/remove-none-type'; import { MapValuesPipe } from '../../pipes/map-values.pipe'; +import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource'; +import { Links } from '../../model/links'; @Component({ @@ -33,9 +35,11 @@ export class FilterComponent { } -const workbasketSummary: WorkbasketSummary[] = [new WorkbasketSummary("1", "key1", "NAME1", "description 1", "owner 1", "", "", "PERSONAL", "", "", "", ""), -new WorkbasketSummary("2", "key2", "NAME2", "description 2", "owner 2", "", "", "GROUP", "", "", "", "") -]; +const workbasketSummaryResource: WorkbasketSummaryResource = new WorkbasketSummaryResource({ + 'workbaskets': new Array( + 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', () => { @@ -67,7 +71,7 @@ describe('WorkbasketListComponent', () => { component = fixture.componentInstance; debugElement = fixture.debugElement.nativeElement; 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')); fixture.detectChanges(); @@ -85,7 +89,7 @@ describe('WorkbasketListComponent', () => { component.ngOnInit(); expect(workbasketService.getWorkBasketsSummary).toHaveBeenCalled(); workbasketService.getWorkBasketsSummary().subscribe(value => { - expect(value).toBe(workbasketSummary); + expect(value).toBe(workbasketSummaryResource); }) }); diff --git a/admin/src/app/workbasket/list/workbasket-list.component.ts b/admin/src/app/workbasket/list/workbasket-list.component.ts index ccc59d41b..6aa25e570 100644 --- a/admin/src/app/workbasket/list/workbasket-list.component.ts +++ b/admin/src/app/workbasket/list/workbasket-list.component.ts @@ -1,5 +1,6 @@ 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 { Subscription } from 'rxjs/Subscription'; import { FilterModel } from '../../shared/filter/filter.component' @@ -32,7 +33,7 @@ export class WorkbasketListComponent implements OnInit { ngOnInit() { this.requestInProgress = true; this.workBasketSummarySubscription = this.workbasketService.getWorkBasketsSummary().subscribe(resultList => { - this.workbaskets = resultList; + this.workbaskets = resultList._embedded.workbaskets; this.requestInProgress = false; }); @@ -79,11 +80,11 @@ export class WorkbasketListComponent implements OnInit { private performRequest(): void { this.requestInProgress = true; - this.workbaskets = undefined; + this.workbaskets = []; 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.type, undefined, this.filterBy.key).subscribe(resultList => { - this.workbaskets = resultList; + this.workbaskets = resultList._embedded? resultList._embedded.workbaskets:[]; this.requestInProgress = false; this.unSelectWorkbasket(); }));