TSK-404 allow workbasket list filtering while selection is applied.

This commit is contained in:
Martin Rojas Miguel Angel 2018-04-02 09:55:47 +02:00 committed by Holger Hagen
parent a311a60301
commit 5864d70e0b
25 changed files with 133 additions and 148 deletions

View File

@ -54,6 +54,7 @@ public class WorkbasketMapper {
.withRel("distributionTargets"));
resource.add(linkTo(methodOn(WorkbasketController.class).getWorkbasketAccessItems(wb.getId()))
.withRel("accessItems"));
resource.add(linkTo(WorkbasketController.class).withRel("allWorkbaskets"));
return resource;
}
}

View File

@ -1,14 +1,14 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ClassificationListComponent} from './classification-list.component';
import {ImportExportComponent} from '../../../import-export/import-export.component';
import {SpinnerComponent} from '../../../../shared/spinner/spinner.component';
import {WorkbasketService} from '../../../../services/workbasket/workbasket.service';
import {ImportExportComponent} from 'app/shared/import-export/import-export.component';
import {SpinnerComponent} from 'app/shared/spinner/spinner.component';
import {WorkbasketService} from 'app/services/workbasket/workbasket.service';
import {HttpClient, HttpClientModule} from '@angular/common/http';
import {WorkbasketDefinitionService} from '../../../../services/workbasket/workbasketDefinition.service';
import {AlertService} from '../../../../services/alert/alert.service';
import {ClassificationService} from '../../../../services/classification/classification.service';
import {DomainService} from '../../../../services/domains/domain.service';
import {WorkbasketDefinitionService} from 'app/services/workbasket/workbasketDefinition.service';
import {AlertService} from 'app/services/alert/alert.service';
import {ClassificationService} from 'app/services/classification/classification.service';
import {DomainService} from 'app/services/domains/domain.service';
describe('ClassificationListComponent', () => {
let component: ClassificationListComponent;

View File

@ -1,5 +1,5 @@
import {Component, OnInit} from '@angular/core';
import {SelectionToImport} from '../../../enums/SelectionToImport';
import { Component, OnInit } from '@angular/core';
import { ImportType } from 'app/models/import-type';
@Component({
selector: 'taskana-classification-list',
@ -8,7 +8,7 @@ import {SelectionToImport} from '../../../enums/SelectionToImport';
})
export class ClassificationListComponent implements OnInit {
selectionToImport = SelectionToImport.CLASSIFICATIONS;
selectionToImport = ImportType.CLASSIFICATIONS;
requestInProgress = false;
constructor() {

View File

@ -1,24 +0,0 @@
<!-- TODO: fix position of import button -->
<input #selectedFile type="file" (change)="onSelectFile($event)"
class="hide"/>
<button class="btn btn-default glyphicon glyphicon-upload" type="button" title="Import"
(click)="selectedFile.click()"></button>
<div class="dropdown" style="display: inline">
<button type="button" title="Export" class="btn btn-default dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"
(click)="updateDomains()">
<span class="glyphicon glyphicon-download"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" (click)="export()"><label>All Domains</label></a>
</li>
<div role="separator" class="divider"></div>
<li *ngFor="let domain of domains">
<a class="dropdown-item"
(click)="export(domain)"><label>{{domain === '' ? 'Master' : domain}}</label></a>
</li>
</ul>
</div>

View File

@ -51,7 +51,7 @@ export class AccessItemsComponent implements OnChanges, OnDestroy {
private savingWorkbaskets: SavingWorkbasketService) { }
ngOnChanges(changes: SimpleChanges): void {
if (changes.active.currentValue === 'accessItems' && !this.initialized) {
if (!this.initialized && changes.active && changes.active.currentValue === 'accessItems') {
this.init();
}
}

View File

@ -60,7 +60,7 @@ export class DistributionTargetsComponent implements OnChanges, OnDestroy {
private errorModalService: ErrorModalService) { }
ngOnChanges(changes: SimpleChanges): void {
if (changes.active.currentValue === 'distributionTargets' && !this.initialized) {
if (!this.initialized && changes.active && changes.active.currentValue === 'distributionTargets' ) {
this.init();
}
}

View File

@ -7,8 +7,8 @@ import { HttpClientModule } from '@angular/common/http';
import { HttpModule, JsonpModule } from '@angular/http';
import { RouterTestingModule } from '@angular/router/testing';
import { Observable } from 'rxjs/Observable';
import {Component} from '@angular/core';
import {Routes} from '@angular/router';
import { Component } from '@angular/core';
import { Routes } from '@angular/router';
import { Workbasket } from 'app/models/workbasket';
import { ICONTYPES } from 'app/models/type';
@ -26,15 +26,15 @@ import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-
import { AlertService } from 'app/services/alert/alert.service';
@Component({
selector: 'taskana-dummy-detail',
template: 'dummydetail'
selector: 'taskana-dummy-detail',
template: 'dummydetail'
})
export class DummyDetailComponent {
}
const routes: Routes = [
{ path: ':id', component: DummyDetailComponent, outlet: 'detail' },
{ path: 'someNewId', component: DummyDetailComponent }
{ path: ':id', component: DummyDetailComponent, outlet: 'detail' },
{ path: 'someNewId', component: DummyDetailComponent }
];
describe('InformationComponent', () => {
@ -94,7 +94,9 @@ describe('InformationComponent', () => {
expect(component.workbasketClone).toBeUndefined();
component.workbasket = new Workbasket('id', 'created', 'keyModified', 'domain', ICONTYPES.TOPIC, 'modified', 'name', 'description',
'owner', 'custom1', 'custom2', 'custom3', 'custom4', 'orgLevel1', 'orgLevel2', 'orgLevel3', 'orgLevel4', null);
component.ngOnInit();
component.ngOnChanges(
undefined
);
fixture.detectChanges();
expect(component.workbasket.workbasketId).toEqual(component.workbasketClone.workbasketId);
});

View File

@ -1,4 +1,4 @@
import { Component, OnInit, Input, Output, OnDestroy } from '@angular/core';
import { Component, OnInit, Input, Output, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
import { DatePipe } from '@angular/common';
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
@ -23,7 +23,7 @@ const dateLocale = 'en-US';
templateUrl: './workbasket-information.component.html',
styleUrls: ['./workbasket-information.component.scss']
})
export class WorkbasketInformationComponent implements OnInit, OnDestroy {
export class WorkbasketInformationComponent implements OnChanges, OnDestroy {
@Input()
workbasket: Workbasket;
@ -50,7 +50,7 @@ export class WorkbasketInformationComponent implements OnInit, OnDestroy {
this.allTypes = IconTypeComponent.allTypes;
}
ngOnInit() {
ngOnChanges(changes: SimpleChanges): void {
this.workbasketClone = { ...this.workbasket };
if (this.action === ACTION.CREATE) {
this.badgeMessage = 'Creating new workbasket';

View File

@ -100,30 +100,23 @@ export class WorkbasketDetailsComponent implements OnInit, OnDestroy {
private getWorkbasketInformation(workbasketIdSelected: string, copyId: string = undefined) {
this.requestInProgress = true;
this.service.getWorkBasketsSummary().subscribe((workbasketSummary: WorkbasketSummaryResource) => {
if (!workbasketIdSelected && this.action === ACTION.CREATE) { // CREATE
this.workbasket = new Workbasket(undefined);
this.workbasket._links.self = workbasketSummary._links.allWorkbaskets;
this.requestInProgress = false;
} else if (!workbasketIdSelected && this.action === ACTION.COPY) { // COPY
this.workbasket = { ...this.workbasketCopy };
this.workbasket._links.self = workbasketSummary._links.allWorkbaskets;
this.workbasket.workbasketId = undefined;
this.requestInProgress = false;
}
const 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;
});
}
});
}
private getWorkbasketSummaryById(workbasketSummary: Array<WorkbasketSummary>, selectedId: string): WorkbasketSummary {
return workbasketSummary.find((summary => summary.workbasketId === selectedId));
if (!workbasketIdSelected && this.action === ACTION.CREATE) { // CREATE
this.workbasket = new Workbasket(undefined);
this.workbasket._links.self = this.workbasket._links.allWorkbasketUrl;
this.requestInProgress = false;
} else if (!workbasketIdSelected && this.action === ACTION.COPY) { // COPY
this.workbasket = { ...this.workbasketCopy };
this.workbasket._links.self = this.workbasket._links.allWorkbasketUrl;
this.workbasket.workbasketId = undefined;
this.requestInProgress = false;
}
if (workbasketIdSelected) {
this.workbasketSubscription = this.service.getWorkBasket(workbasketIdSelected).subscribe(workbasket => {
this.workbasket = workbasket;
this.requestInProgress = false;
});
}
}
ngOnDestroy(): void {

View File

@ -1,7 +1,6 @@
<li id="wb-action-toolbar" class="list-group-item tab-align">
<div class="row">
<div class="col-xs-9">
<taskana-import-export-component [currentSelection]="selectionToImport"></taskana-import-export-component>
<button type="button" (click)="addWorkbasket()" data-toggle="tooltip" title="Add" class="btn btn-default">
<span class="glyphicon glyphicon-plus green" aria-hidden="true"></span>
</button>
@ -14,18 +13,17 @@
<button *ngIf="workbasketIdSelected" type="button" (click)="removeWorkbasket()" data-toggle="tooltip" title="Remove" class="btn btn-default remove">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
<taskana-import-export-component [currentSelection]="'workbaskets'"></taskana-import-export-component>
<taskana-import-export-component [currentSelection]="'workbaskets'"></taskana-import-export-component>
</div>
<div class="pull-right margin-right">
<taskana-sort (performSorting)="sorting($event)"></taskana-sort>
<div class="clearfix btn-group">
<button class="btn btn-default collapsed" type="button" id="collapsedMenufilterWb" aria-expanded="false" (click)="toolbarState=!toolbarState">
<span class="glyphicon glyphicon-filter blue"></span>
</button>
</div>
<button class="btn btn-default collapsed" type="button" id="collapsedMenufilterWb" aria-expanded="false" (click)="toolbarState=!toolbarState">
<span class="glyphicon glyphicon-filter blue"></span>
</button>
</div>
</div>
<div [@toggle]="toolbarState" *ngIf="toolbarState" class="row no-overflow">
<taskana-filter (performFilter)="filtering($event)"></taskana-filter>
</div>
</li>
</li>

View File

@ -18,6 +18,7 @@ import { SortComponent } from 'app/shared/sort/sort.component';
import { FilterComponent } from 'app/shared/filter/filter.component';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar.component';
import { ImportExportComponent } from 'app/shared/import-export/import-export.component';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
@ -25,10 +26,9 @@ import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
import { AlertService } from 'app/services/alert/alert.service';
import {ImportExportComponent} from '../../../../import-export/import-export.component';
import {ClassificationService} from '../../../../../services/classification/classification.service';
import {WorkbasketDefinitionService} from '../../../../../services/workbasket/workbasketDefinition.service';
import {DomainService} from '../../../../../services/domains/domain.service';
import { ClassificationService } from 'app/services/classification/classification.service';
import { WorkbasketDefinitionService } from 'app/services/workbasket/workbasketDefinition.service';
import { DomainService } from 'app/services/domains/domain.service';
@Component({
selector: 'taskana-dummy-detail',
@ -54,7 +54,7 @@ describe('WorkbasketListToolbarComponent', () => {
declarations: [WorkbasketListToolbarComponent, SortComponent,
FilterComponent, IconTypeComponent, DummyDetailComponent, MapValuesPipe, ImportExportComponent],
providers: [ErrorModalService, WorkbasketService, RequestInProgressService, AlertService,
ClassificationService, WorkbasketDefinitionService, DomainService]
ClassificationService, WorkbasketDefinitionService, DomainService]
})
.compileComponents();
}));

View File

@ -2,18 +2,18 @@ import { Component, OnInit, Input, Output, EventEmitter, AfterViewChecked } from
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
import { Router, ActivatedRoute } from '@angular/router';
import {SortingModel} from 'app/models/sorting';
import {FilterModel} from 'app/models/filter';
import {Subscription} from 'rxjs/Subscription';
import {WorkbasketSummary} from 'app/models/workbasket-summary';
import {ErrorModel} from 'app/models/modal-error';
import {AlertModel, AlertType} from 'app/models/alert';
import { SortingModel } from 'app/models/sorting';
import { FilterModel } from 'app/models/filter';
import { Subscription } from 'rxjs/Subscription';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { ErrorModel } from 'app/models/modal-error';
import { AlertModel, AlertType } from 'app/models/alert';
import {ErrorModalService} from 'app/services/errorModal/error-modal.service';
import {RequestInProgressService} from 'app/services/requestInProgress/request-in-progress.service';
import {WorkbasketService} from 'app/services/workbasket/workbasket.service';
import {AlertService} from 'app/services/alert/alert.service';
import {SelectionToImport} from '../../../../enums/SelectionToImport';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService } from 'app/services/alert/alert.service';
import { ImportType } from 'app/models/import-type';
@Component({
selector: 'taskana-workbasket-list-toolbar',
@ -30,7 +30,7 @@ import {SelectionToImport} from '../../../../enums/SelectionToImport';
style({ opacity: 0.5, height: '50px' }),
style({ opacity: 0, height: '0px' })])))
]
)],
)],
templateUrl: './workbasket-list-toolbar.component.html',
styleUrls: ['./workbasket-list-toolbar.component.scss']
})
@ -39,11 +39,11 @@ export class WorkbasketListToolbarComponent implements OnInit {
@Input() workbaskets: Array<WorkbasketSummary>;
@Input() workbasketIdSelected: string;
@Input() workbasketIdSelectedChanged: string;
@Output() workbasketIdSelectedChanged: string;
@Output() performSorting = new EventEmitter<SortingModel>();
@Output() performFilter = new EventEmitter<FilterModel>();
workbasketServiceSubscription: Subscription;
selectionToImport = SelectionToImport.WORKBASKETS;
selectionToImport = ImportType.WORKBASKETS;
toolbarState = false;
constructor(
@ -66,6 +66,7 @@ export class WorkbasketListToolbarComponent implements OnInit {
}
addWorkbasket() {
this.workbasketIdSelected = undefined;
this.router.navigate([{ outlets: { detail: ['new-workbasket'] } }], { relativeTo: this.route });
}
@ -85,6 +86,7 @@ export class WorkbasketListToolbarComponent implements OnInit {
}
copyWorkbasket() {
this.workbasketIdSelected = undefined;
this.router.navigate([{ outlets: { detail: ['copy-workbasket'] } }], { relativeTo: this.route });
}

View File

@ -7,7 +7,9 @@
<taskana-spinner [isRunning]="requestInProgress" class="centered-horizontally"></taskana-spinner>
<div>
<ul #wbList id="wb-list-container" class="list-group">
<li class="list-group-item no-border">
<div class="row"></div>
</li>
<li class="list-group-item" *ngFor="let workbasket of workbaskets" [class.active]="workbasket.workbasketId == selectedId"
type="text" (click)="selectWorkbasket(workbasket.workbasketId)">
<div class="row">

View File

@ -34,3 +34,7 @@ li > div.row > dl {
li > div.row > dl:first-child {
margin-left: 10px;
}
.no-border {
border-top: none;
}

View File

@ -24,13 +24,13 @@ import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar/workba
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { SortComponent } from 'app/shared/sort/sort.component';
import { ImportExportComponent } from '../../../import-export/import-export.component';
import { ImportExportComponent } from 'app/shared/import-export/import-export.component';
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
import { ClassificationService } from '../../../../services/classification/classification.service';
import { WorkbasketDefinitionService } from '../../../../services/workbasket/workbasketDefinition.service';
import { DomainService } from '../../../../services/domains/domain.service';
import { WorkbasketDefinitionService } from 'app/services/workbasket/workbasketDefinition.service';
import { ClassificationService } from 'app/services/classification/classification.service';
import { DomainService } from 'app/services/domains/domain.service';
@Component({
selector: 'taskana-dummy-detail',
@ -91,7 +91,7 @@ describe('WorkbasketListComponent', () => {
RouterTestingModule.withRoutes(routes)
],
providers: [WorkbasketService, ErrorModalService, RequestInProgressService, AlertService,
ClassificationService, WorkbasketDefinitionService, OrientationService, DomainService]
WorkbasketDefinitionService, OrientationService, DomainService, ClassificationService]
})
.compileComponents();
@ -131,24 +131,24 @@ describe('WorkbasketListComponent', () => {
expect(debugElement.querySelector('#wb-list-container')).toBeDefined();
expect(debugElement.querySelector('#collapsedMenufilterWb')).toBeDefined();
expect(debugElement.querySelector('taskana-filter')).toBeDefined();
expect(debugElement.querySelectorAll('#wb-list-container > li').length).toBe(2);
expect(debugElement.querySelectorAll('#wb-list-container > li').length).toBe(3);
});
it('should have two workbasketsummary rows created with the second one selected.', fakeAsync(() => {
tick(0);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(debugElement.querySelectorAll('#wb-list-container > li').length).toBe(2);
expect(debugElement.querySelectorAll('#wb-list-container > li')[0].getAttribute('class')).toBe('list-group-item');
expect(debugElement.querySelectorAll('#wb-list-container > li')[1].getAttribute('class')).toBe('list-group-item active');
expect(debugElement.querySelectorAll('#wb-list-container > li').length).toBe(3);
expect(debugElement.querySelectorAll('#wb-list-container > li')[1].getAttribute('class')).toBe('list-group-item');
expect(debugElement.querySelectorAll('#wb-list-container > li')[2].getAttribute('class')).toBe('list-group-item active');
})
}));
it('should have two workbasketsummary rows created with two different icons: user and users', () => {
expect(debugElement.querySelectorAll('#wb-list-container > li')[0]
.querySelector('svg-icon').getAttribute('ng-reflect-src')).toBe('./assets/icons/user.svg');
expect(debugElement.querySelectorAll('#wb-list-container > li')[1]
.querySelector('svg-icon').getAttribute('ng-reflect-src')).toBe('./assets/icons/user.svg');
expect(debugElement.querySelectorAll('#wb-list-container > li')[2]
.querySelector('svg-icon').getAttribute('ng-reflect-src')).toBe('./assets/icons/users.svg');
});

View File

@ -1,6 +1,6 @@
import {
Component, OnInit, EventEmitter, OnDestroy,
HostListener, ViewChild, ElementRef, AfterViewChecked
HostListener, ViewChild, ElementRef, AfterViewChecked, ChangeDetectorRef
} from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
@ -40,7 +40,8 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
private workbasketService: WorkbasketService,
private router: Router,
private route: ActivatedRoute,
private orientationService: OrientationService) { }
private orientationService: OrientationService,
private cd: ChangeDetectorRef) { }
ngOnInit() {
this.requestInProgress = true;
@ -59,10 +60,6 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
selectWorkbasket(id: string) {
this.selectedId = id;
if (!this.selectedId) {
this.router.navigate(['/workbaskets']);
return
}
this.router.navigate([{ outlets: { detail: [this.selectedId] } }], { relativeTo: this.route });
}
@ -84,7 +81,7 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
private refreshWorkbasketList() {
const toolbarSize = this.toolbarElement.nativeElement.offsetHeight;
const cardHeight = 75;
const unusedHeight = 140
const unusedHeight = 145
const totalHeight = window.innerHeight;
const cards = Math.round((totalHeight - (unusedHeight + toolbarSize)) / cardHeight);
this.workbasketService.pageSize = cards;
@ -102,17 +99,9 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
this.workbasketsResource = resultList;
this.workbaskets = resultList._embedded ? resultList._embedded.workbaskets : [];
this.requestInProgress = false;
this.unSelectWorkbasket();
});
}
private unSelectWorkbasket(): void {
if (!this.workbaskets.find(wb => wb.workbasketId === this.selectedId)) {
this.selectWorkbasket(undefined);
}
}
ngOnDestroy() {
if (this.workBasketSummarySubscription) { this.workBasketSummarySubscription.unsubscribe(); }
if (this.workbasketServiceSubscription) { this.workbasketServiceSubscription.unsubscribe(); }

View File

@ -32,7 +32,7 @@ import {SortComponent} from './shared/sort/sort.component';
import {GeneralMessageModalComponent} from './shared/general-message-modal/general-message-modal.component';
import {PaginationComponent} from './administration/workbasket/master/list/pagination/pagination.component';
import {ClassificationListComponent} from './administration/classification/master/list/classification-list.component';
import {ImportExportComponent} from './administration/import-export/import-export.component';
import {ImportExportComponent} from './shared/import-export/import-export.component';
// Shared
import {MasterAndDetailComponent} from './shared/masterAndDetail/master-and-detail.component';
/**

View File

@ -1,4 +1,4 @@
export enum SelectionToImport {
export enum ImportType {
WORKBASKETS,
CLASSIFICATIONS
}

View File

@ -2,6 +2,7 @@ export class Links {
constructor(
public self: { 'href': string } = undefined,
public distributionTargets: { 'href': string } = undefined,
public accessItems: { 'href': string } = undefined
public accessItems: { 'href': string } = undefined,
public allWorkbasketUrl: { 'href': string } = undefined
) { }
}

View File

@ -77,8 +77,8 @@ export class WorkbasketService {
}
// GET
getWorkBasket(url: string): Observable<Workbasket> {
return this.httpClient.get<Workbasket>(url, this.httpOptions);
getWorkBasket(id: string): Observable<Workbasket> {
return this.httpClient.get<Workbasket>(`${environment.taskanaRestUrl}/v1/workbaskets/${id}`, this.httpOptions);
}
// POST
createWorkbasket(url: string, workbasket: Workbasket): Observable<Workbasket> {

View File

@ -0,0 +1,23 @@
<input #selectedFile type="file" (change)="onSelectFile($event)" class="hide" />
<button class="btn btn-default glyphicon glyphicon-upload" type="button" title="Import" (click)="selectedFile.click()"></button>
<div class="dropdown" style="display: inline">
<button type="button" title="Export" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="true" (click)="updateDomains()">
<span class="glyphicon glyphicon-download"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" (click)="export()">
<label>All Domains</label>
</a>
</li>
<div role="separator" class="divider"></div>
<li *ngFor="let domain of domains">
<a class="dropdown-item" (click)="export(domain)">
<label>{{domain === '' ? 'Master' : domain}}</label>
</a>
</li>
</ul>
</div>

View File

@ -33,15 +33,4 @@ describe('ImportExportComponent', () => {
expect(component).toBeTruthy();
});
// TODO add tests for inport/export
/*
it('should update domains', () => {
let domains = [];
domainService.getDomains().subscribe(
result => domains = result
);
component.updateDomains();
expect(component.domains).toEqual(domains);
})
*/
});

View File

@ -1,8 +1,8 @@
import {Component, Input, OnInit} from '@angular/core';
import {ClassificationService} from 'app/services/classification/classification.service';
import {WorkbasketDefinitionService} from 'app/services/workbasket/workbasketDefinition.service';
import {DomainService} from '../../services/domains/domain.service';
import {SelectionToImport} from '../enums/SelectionToImport';
import { Component, Input, OnInit } from '@angular/core';
import { ClassificationService } from 'app/services/classification/classification.service';
import { WorkbasketDefinitionService } from 'app/services/workbasket/workbasketDefinition.service';
import { DomainService } from 'app/services/domains/domain.service';
import { ImportType } from 'app/models/import-type';
@Component({
selector: 'taskana-import-export-component',
@ -11,11 +11,11 @@ import {SelectionToImport} from '../enums/SelectionToImport';
})
export class ImportExportComponent implements OnInit {
@Input() currentSelection: SelectionToImport;
@Input() currentSelection: ImportType;
domains: string[] = [];
constructor(private domainService: DomainService, private workbasketDefinitionService: WorkbasketDefinitionService,
private classificationService: ClassificationService) {
private classificationService: ClassificationService) {
}
ngOnInit() {
@ -30,7 +30,7 @@ export class ImportExportComponent implements OnInit {
onSelectFile(event) {
const file = event.srcElement.files[0];
const reader = new FileReader();
if (this.currentSelection === SelectionToImport.WORKBASKETS) {
if (this.currentSelection === ImportType.WORKBASKETS) {
reader.onload = <Event>(e) => this.workbasketDefinitionService.importWorkbasketDefinitions(e.target.result);
} else {
reader.onload = <Event>(e) => this.classificationService.importClassifications(e.target.result);
@ -39,7 +39,7 @@ export class ImportExportComponent implements OnInit {
}
export(domain = '') {
if (this.currentSelection === SelectionToImport.WORKBASKETS) {
if (this.currentSelection === ImportType.WORKBASKETS) {
this.workbasketDefinitionService.exportWorkbaskets(domain);
} else {
this.classificationService.exportClassifications(domain);

View File

@ -230,6 +230,11 @@
margin-top: 4px;
}
.navbar-inverse {
box-shadow: 0px 1px 10px -1px rgb(51, 93, 125);
border: none;
}
taskana-workbasket-information, taskana-workbasket-access-items, taskana-workbaskets-distribution-targets {
&> .panel{
border: none;