diff options
Diffstat (limited to 'frontend/src/app/_services')
-rw-r--r-- | frontend/src/app/_services/csv-parse.service.spec.ts | 16 | ||||
-rw-r--r-- | frontend/src/app/_services/csv-parse.service.ts | 53 | ||||
-rw-r--r-- | frontend/src/app/_services/datasets.service.ts | 8 |
3 files changed, 74 insertions, 3 deletions
diff --git a/frontend/src/app/_services/csv-parse.service.spec.ts b/frontend/src/app/_services/csv-parse.service.spec.ts new file mode 100644 index 00000000..ab685d49 --- /dev/null +++ b/frontend/src/app/_services/csv-parse.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { CsvParseService } from './csv-parse.service'; + +describe('CsvParseService', () => { + let service: CsvParseService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(CsvParseService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/_services/csv-parse.service.ts b/frontend/src/app/_services/csv-parse.service.ts new file mode 100644 index 00000000..d53f504e --- /dev/null +++ b/frontend/src/app/_services/csv-parse.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from "@angular/core"; +@Injectable({ providedIn: 'root' }) +export class CsvParseService { + + csvToArray(strData: string, strDelimiter: string): string[][] { + strDelimiter = (strDelimiter || ","); + + let objPattern = new RegExp( + ( + // Delimiters. + "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + + + // Quoted fields. + "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + + + // Standard fields. + "([^\"\\" + strDelimiter + "\\r\\n]*))" + ), + "gi" + ); + + let arrData: string[][] = [[]]; + + let arrMatches = null; + + while (arrMatches = objPattern.exec(strData)) { + + let strMatchedDelimiter = arrMatches[1]; + + if ( + strMatchedDelimiter.length && + strMatchedDelimiter !== strDelimiter + ) { + arrData.push([]); + } + + let strMatchedValue; + + if (arrMatches[2]) { + strMatchedValue = arrMatches[2].replace( + new RegExp("\"\"", "g"), + "\"" + ); + } else { + strMatchedValue = arrMatches[3]; + } + + arrData[arrData.length - 1].push(strMatchedValue); + } + + return (arrData); + } +}
\ No newline at end of file diff --git a/frontend/src/app/_services/datasets.service.ts b/frontend/src/app/_services/datasets.service.ts index fadcdeae..35ca24e5 100644 --- a/frontend/src/app/_services/datasets.service.ts +++ b/frontend/src/app/_services/datasets.service.ts @@ -13,12 +13,14 @@ export class DatasetsService { constructor(private http: HttpClient, private authService: AuthService) { } getPublicDatasets(): Observable<Dataset[]> { - return this.http.get<Dataset[]>(`${API_SETTINGS.apiURL}/Dataset/publicdatasets`, { headers: this.authService.authHeader() }); + return this.http.get<Dataset[]>(`${API_SETTINGS.apiURL}/dataset/publicdatasets`, { headers: this.authService.authHeader() }); } - addDataset(dataset:Dataset):any{ + addDataset(dataset: Dataset): any { return this.http.post(`${API_SETTINGS.apiURL}/dataset/add`, dataset, { headers: this.authService.authHeader() }); } - + getDatasetFile(fileId: any): any { + return this.http.get(`${API_SETTINGS.apiURL}/file/download?id=${fileId}`, { headers: this.authService.authHeader(), responseType: 'text' }); + } } |