|
1 | 1 | import { Component, OnInit } from '@angular/core'; |
| 2 | +import { ymlService } from '../../service/yaml-parser/yaml-parser.service'; |
| 3 | +import { MatTableDataSource } from '@angular/material/table'; |
2 | 4 |
|
3 | | -export interface PeriodicElement { |
4 | | - name: string; |
5 | | - position: number; |
6 | | - weight: number; |
7 | | - symbol: string; |
| 5 | +export interface MappingElement { |
| 6 | + dimension: string; |
| 7 | + subDimension: string; |
| 8 | + taskName: string; |
| 9 | + samm2: string[]; |
| 10 | + ISO:string[]; |
8 | 11 | } |
9 | 12 |
|
10 | | -const ELEMENT_DATA: PeriodicElement[] = [ |
11 | | - {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, |
12 | | - {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, |
13 | | - {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, |
14 | | - {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, |
15 | | - {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, |
16 | | - {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, |
17 | | - {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, |
18 | | - {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, |
19 | | - {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, |
20 | | - {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, |
21 | | -]; |
22 | 13 |
|
23 | 14 | @Component({ |
24 | 15 | selector: 'app-mapping', |
25 | 16 | templateUrl: './mapping.component.html', |
26 | 17 | styleUrls: ['./mapping.component.css'] |
27 | 18 | }) |
28 | 19 | export class MappingComponent implements OnInit { |
| 20 | + MAPPING_DATA:MappingElement[]=[] |
| 21 | + dataSource:any= new MatTableDataSource<MappingElement>(this.MAPPING_DATA); |
| 22 | + YamlObject:any; |
29 | 23 |
|
30 | | - displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; |
31 | | - dataSource = ELEMENT_DATA; |
32 | | - |
33 | | - constructor() { } |
| 24 | + displayedColumns: string[] = ['dimension', 'subDimension', 'taskName','samm2' ,'ISO']; |
| 25 | + allDimensionNames:string[]=[]; |
| 26 | + temporaryMappingElement:any |
| 27 | + constructor(private yaml:ymlService) { } |
34 | 28 |
|
35 | 29 | ngOnInit(): void { |
| 30 | + //gets value from generated folder |
| 31 | + this.yaml.setURI('./assets/YAML/generated/sample.yaml'); |
| 32 | + // Function sets data |
| 33 | + this.yaml.getJson().subscribe((data) => { |
| 34 | + this.YamlObject = data; |
| 35 | + this.allDimensionNames= Object.keys(this.YamlObject) |
| 36 | + for(let i =0;i<this.allDimensionNames.length;i++){ |
| 37 | + var subdimensionsInCurrentDimension = Object.keys(this.YamlObject[this.allDimensionNames[i]]) |
| 38 | + for(let j=0;j<subdimensionsInCurrentDimension.length;j++){ |
| 39 | + var taskInCurrentSubDimension:string[]= Object.keys(this.YamlObject[this.allDimensionNames[i]][subdimensionsInCurrentDimension[j]]) |
| 40 | + for(let a=0;a<taskInCurrentSubDimension.length;a++){ |
| 41 | + this.setValueandAppendToDataset(this.allDimensionNames[i],subdimensionsInCurrentDimension[j],taskInCurrentSubDimension[a]) |
| 42 | + } |
| 43 | + } |
| 44 | + } |
| 45 | + // weird fix to render DOM for table viewing in angular material |
| 46 | + this.dataSource._data.next(this.dataSource.data); |
| 47 | + }) |
| 48 | + |
| 49 | + //this.dataSource=new MatTableDataSource([...this.dataSource]); |
| 50 | + //console.log(this.dataSource.data) |
| 51 | + } |
| 52 | + |
| 53 | + //Sets dataSource value |
| 54 | + setValueandAppendToDataset(dim:string,subDim:string,task:string){ |
| 55 | + var ISOArray:string[]=this.YamlObject[dim][subDim][task]['references']['iso27001-2017'] |
| 56 | + var SAMMArray:string[]=this.YamlObject[dim][subDim][task]['references']['samm2'] |
| 57 | + this.temporaryMappingElement={"dimension":dim,"subDimension":subDim,"taskName":task,"ISO":ISOArray,"samm2":SAMMArray} |
| 58 | + //console.log(this.temp) |
| 59 | + this.dataSource.data.push(this.temporaryMappingElement) |
| 60 | + |
36 | 61 | } |
37 | 62 |
|
38 | 63 | } |
0 commit comments