Fixed error on import

This commit is contained in:
Lars Leo Grätz 2018-04-05 12:54:43 +02:00 committed by Martin Rojas Miguel Angel
parent fca11cea7f
commit b86392caa7
7 changed files with 28 additions and 13 deletions

View File

@ -18,6 +18,7 @@ import { AlertService } from 'app/services/alert/alert.service';
import { ClassificationsService } from 'app/services/classifications/classifications.service'; import { ClassificationsService } from 'app/services/classifications/classifications.service';
import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service'; import { ClassificationDefinitionService } from 'app/services/classification-definition/classification-definition.service';
import { DomainService } from 'app/services/domains/domain.service'; import { DomainService } from 'app/services/domains/domain.service';
import {ErrorModalService} from '../../../../services/errorModal/error-modal.service';
@Component({ @Component({
selector: 'taskana-tree', selector: 'taskana-tree',
@ -55,8 +56,8 @@ describe('ClassificationListComponent', () => {
TaskanaTreeComponent, DummyDetailComponent], TaskanaTreeComponent, DummyDetailComponent],
imports: [HttpClientModule, RouterTestingModule.withRoutes(routes)], imports: [HttpClientModule, RouterTestingModule.withRoutes(routes)],
providers: [ providers: [
HttpClient, WorkbasketDefinitionService, AlertService, ClassificationsService, DomainService, ClassificationDefinitionService HttpClient, WorkbasketDefinitionService, AlertService, ClassificationsService, DomainService, ClassificationDefinitionService,
ErrorModalService
] ]
}) })
.compileComponents(); .compileComponents();

View File

@ -4,7 +4,7 @@
<button type="button" (click)="addWorkbasket()" data-toggle="tooltip" title="Add" class="btn btn-default"> <button type="button" (click)="addWorkbasket()" data-toggle="tooltip" title="Add" class="btn btn-default">
<span class="glyphicon glyphicon-plus green" aria-hidden="true"></span> <span class="glyphicon glyphicon-plus green" aria-hidden="true"></span>
</button> </button>
<taskana-import-export-component [currentSelection]="'workbaskets'"></taskana-import-export-component> <taskana-import-export-component [currentSelection]="selectionToImport"></taskana-import-export-component>
</div> </div>
<div class="pull-right margin-right"> <div class="pull-right margin-right">
<taskana-sort (performSorting)="sorting($event)"></taskana-sort> <taskana-sort (performSorting)="sorting($event)"></taskana-sort>

View File

@ -6,6 +6,8 @@ import {ClassificationDefinition} from '../../models/classification-definition';
import {AlertModel, AlertType} from '../../models/alert'; import {AlertModel, AlertType} from '../../models/alert';
import {saveAs} from 'file-saver/FileSaver'; import {saveAs} from 'file-saver/FileSaver';
import {TaskanaDate} from '../../shared/util/taskana.date'; import {TaskanaDate} from '../../shared/util/taskana.date';
import {ErrorModel} from '../../models/modal-error';
import {ErrorModalService} from '../errorModal/error-modal.service';
@Injectable() @Injectable()
export class ClassificationDefinitionService { export class ClassificationDefinitionService {
@ -19,7 +21,8 @@ export class ClassificationDefinitionService {
}) })
}; };
constructor(private httpClient: HttpClient, private alertService: AlertService) { constructor(private httpClient: HttpClient, private alertService: AlertService,
private errorModalService: ErrorModalService) {
} }
// GET // GET
@ -38,7 +41,8 @@ export class ClassificationDefinitionService {
this.httpClient.post(this.url + '/import', this.httpClient.post(this.url + '/import',
JSON.parse(classifications), this.httpOptions).subscribe( JSON.parse(classifications), this.httpOptions).subscribe(
classificationsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')), classificationsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')),
error => this.alertService.triggerAlert(new AlertModel(AlertType.DANGER, 'Import was not successful')) error => this.errorModalService.triggerError(new ErrorModel(
`There was an error importing classifications`, error.message))
); );
} }
} }

View File

@ -18,7 +18,6 @@ export class DomainService {
constructor(private httpClient: HttpClient) { constructor(private httpClient: HttpClient) {
} }
// TODO how to enable hateoas support?
// GET // GET
getDomains(): Observable<string[]> { getDomains(): Observable<string[]> {
return this.httpClient.get<string[]>(this.url, this.httpOptions); return this.httpClient.get<string[]>(this.url, this.httpOptions);

View File

@ -6,6 +6,8 @@ import {AlertService} from '../alert/alert.service';
import {WorkbasketDefinition} from '../../models/workbasket-definition'; import {WorkbasketDefinition} from '../../models/workbasket-definition';
import {AlertModel, AlertType} from '../../models/alert'; import {AlertModel, AlertType} from '../../models/alert';
import {TaskanaDate} from '../../shared/util/taskana.date'; import {TaskanaDate} from '../../shared/util/taskana.date';
import {ErrorModel} from '../../models/modal-error';
import {ErrorModalService} from '../errorModal/error-modal.service';
@Injectable() @Injectable()
@ -20,7 +22,8 @@ export class WorkbasketDefinitionService {
}; };
constructor(private httpClient: HttpClient, private alertService: AlertService) { constructor(private httpClient: HttpClient, private alertService: AlertService,
private errorModalService: ErrorModalService) {
} }
// GET // GET
@ -35,12 +38,12 @@ export class WorkbasketDefinitionService {
} }
// POST // POST
// TODO handle error
importWorkbasketDefinitions(workbasketDefinitions: any) { importWorkbasketDefinitions(workbasketDefinitions: any) {
this.httpClient.post(environment.taskanaRestUrl + '/v1/workbasketdefinitions/import', this.httpClient.post(environment.taskanaRestUrl + '/v1/workbasketdefinitions/import',
JSON.parse(workbasketDefinitions), this.httpOptions).subscribe( JSON.parse(workbasketDefinitions), this.httpOptions).subscribe(
workbasketsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')), workbasketsUpdated => this.alertService.triggerAlert(new AlertModel(AlertType.SUCCESS, 'Import was successful')),
error => this.alertService.triggerAlert(new AlertModel(AlertType.DANGER, 'Import was not successful')) error => this.errorModalService.triggerError(new ErrorModel(
`There was an error importing workbaskets`, error.message))
); );
} }
} }

View File

@ -7,6 +7,8 @@ import {WorkbasketDefinitionService} from '../../services/workbasket-definition/
import {AlertService} from '../../services/alert/alert.service'; import {AlertService} from '../../services/alert/alert.service';
import {HttpClientModule} from '@angular/common/http'; import {HttpClientModule} from '@angular/common/http';
import {DomainService} from '../../services/domains/domain.service'; import {DomainService} from '../../services/domains/domain.service';
import {Observable} from 'rxjs/Observable';
import {ErrorModalService} from '../../services/errorModal/error-modal.service';
describe('ImportExportComponent', () => { describe('ImportExportComponent', () => {
let component: ImportExportComponent; let component: ImportExportComponent;
@ -17,7 +19,8 @@ describe('ImportExportComponent', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
declarations: [ImportExportComponent], declarations: [ImportExportComponent],
imports: [HttpClientModule], imports: [HttpClientModule],
providers: [WorkbasketService, ClassificationDefinitionService, WorkbasketDefinitionService, AlertService, DomainService] providers: [WorkbasketService, ClassificationDefinitionService, WorkbasketDefinitionService, AlertService, DomainService,
ErrorModalService]
}) })
.compileComponents(); .compileComponents();
})); }));
@ -25,7 +28,6 @@ describe('ImportExportComponent', () => {
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(ImportExportComponent); fixture = TestBed.createComponent(ImportExportComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
domainService = TestBed.get(DomainService);
fixture.detectChanges(); fixture.detectChanges();
}); });
@ -33,4 +35,10 @@ describe('ImportExportComponent', () => {
expect(component).toBeTruthy(); expect(component).toBeTruthy();
}); });
it('should update domains', () => {
domainService = TestBed.get(DomainService);
spyOn(domainService, 'getDomains').and.returnValue(Observable.of(['A', 'B']));
component.updateDomains();
expect(domainService.getDomains).toHaveBeenCalled();
});
}); });

View File

@ -28,7 +28,7 @@ export class ImportExportComponent implements OnInit {
} }
onSelectFile(event) { onSelectFile(event) {
const file = event.srcElement.files[0]; const file = event.target.files[0];
const reader = new FileReader(); const reader = new FileReader();
if (this.currentSelection === ImportType.WORKBASKETS) { if (this.currentSelection === ImportType.WORKBASKETS) {
reader.onload = <Event>(e) => this.workbasketDefinitionService.importWorkbasketDefinitions(e.target.result); reader.onload = <Event>(e) => this.workbasketDefinitionService.importWorkbasketDefinitions(e.target.result);