diff --git a/testgenerator-web/testgenerator-web/src/app/components/update-project/update-project.component.ts b/testgenerator-web/testgenerator-web/src/app/components/update-project/update-project.component.ts index bec23efb57f932f2bb36bdcbdbe5de31e55a75db..095844730d3582a7c17dd4f6156bf440c56dd1ce 100644 --- a/testgenerator-web/testgenerator-web/src/app/components/update-project/update-project.component.ts +++ b/testgenerator-web/testgenerator-web/src/app/components/update-project/update-project.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewChild, ViewChildren } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; @@ -6,8 +6,11 @@ import { FileService } from 'src/app/services/file.service'; import { ProjectService } from 'src/app/services/project.service'; import { SingleProjectConfig } from 'src/app/models/single-project-config'; -import * as BpmnModdle from 'bpmn-moddle'; +//import * as BpmnModdle from 'bpmn-moddle'; +let BpmnModdle = require('bpmn-moddle').default; +//import BpmnModdle from 'bpmn-moddle'; import { diff } from 'bpmn-js-differ'; +import { BpmnDiagramComponent } from '../bpmn-diagram/bpmn-diagram.component'; @Component({ selector: 'app-update-project', @@ -23,28 +26,57 @@ export class UpdateProjectComponent implements OnInit { diagramNew: string; // updated BPMN-Model diagramsLoaded: boolean = false; + @ViewChild('backupDiagram') backupDiagram; + @ViewChild('newDiagram') newDiagram; + constructor(private fileService: FileService, private projectService: ProjectService, private route: ActivatedRoute) { this.route.params.subscribe(params => this.actualProject = params['projectId'] ) + + } async ngOnInit() { await this.loadProject(); await this.loadDiagram(); await this.loadDiagramUpdated(); + } - compareProjects() { + async compareProjects() { + var currentDiagram, newDiagram; - var diagram1 = new BpmnModdle().fromXML(this.diagram); - var diagram2 = new BpmnModdle().fromXML(this.diagramNew); + try { + var result = await new BpmnModdle().fromXML(this.diagram); + currentDiagram = result.rootElement; + } catch(err){ + console.log('something went wrong!'); + } - var changes = diff(diagram1, diagram2); - console.log(changes._removed); - } + try { + var result = await new BpmnModdle().fromXML(this.diagramNew); + newDiagram = result.rootElement; + } catch(err){ + console.log('something went wrong!'); + } + var changes = diff(currentDiagram, newDiagram); + var container = this.backupDiagram.getBpmnContainer(); + var canvas = container.get('canvas'); + + for(let element of Object.keys(changes._removed)) { + canvas.addMarker(element, 'marker-removed'); + } + + var newContainer = this.newDiagram.getBpmnContainer(); + var newCanvas = newContainer.get('canvas'); + + for(let element of Object.keys(changes._added)) { + newCanvas.addMarker(element, 'marker-added'); + } + } async loadProject() { try { @@ -58,7 +90,7 @@ export class UpdateProjectComponent implements OnInit { async loadDiagram() { try { - let result = await this.fileService.getBPMNDiagram(this.actualProject); + let result = await this.fileService.getBackupBPMNDiagram(this.actualProject); this.diagram = result; } finally { @@ -68,7 +100,7 @@ export class UpdateProjectComponent implements OnInit { async loadDiagramUpdated() { try { - let result = await this.fileService.getUpdatedBPMNDiagram(this.actualProject); + let result = await this.fileService.getBPMNDiagram(this.actualProject); this.diagramNew = result; } finally {