From: Bastian Dehn Date: Thu, 9 Jun 2022 18:42:18 +0000 (+0200) Subject: add: json file service X-Git-Tag: v1.0^2~14 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=97135502cc2e67bcc367eeba027ec6a475ba13ec;p=speisekarten-editor.git add: json file service --- diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 2e1c266..13ef1bd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; +import { SafeUrl } from '@angular/platform-browser'; import { ITitle } from './ititle'; import { ISubtitle } from './isubtitle'; import { IFood } from './ifood'; import { IFoodCard } from './ifood-card'; -import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; +import { JsonFileService } from './json-file.service'; @Component({ selector: 'app-root', @@ -14,25 +15,19 @@ import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; export class AppComponent { public foodcard: IFoodCard = { Titles: [] }; - public downloadJsonHref: SafeUrl = ""; + public downloadJsonHref: SafeUrl = "" - constructor(private sanitizer: DomSanitizer) {} + constructor(private jsonFileService: JsonFileService) {} public exportJson(): void { - let json = JSON.stringify(this.foodcard); - let uri = this.sanitizer.bypassSecurityTrustUrl( - "data:text/json;charset=UTF-8," + json); - this.downloadJsonHref = uri; + this.downloadJsonHref = this.jsonFileService.exportJson( + this.foodcard); } public fileEvent(event: any): void { - const reader = new FileReader(); - reader.onload = (e: any) => { - this.foodcard = JSON.parse(e.target.result); - } - reader.readAsText(event.target.files[0]); + this.foodcard = this.jsonFileService.importJson(event); } public addTitle(): void diff --git a/src/app/json-file.service.spec.ts b/src/app/json-file.service.spec.ts new file mode 100644 index 0000000..1f1ac7c --- /dev/null +++ b/src/app/json-file.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { JsonFileService } from './json-file.service'; + +describe('JsonFileService', () => { + let service: JsonFileService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(JsonFileService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/json-file.service.ts b/src/app/json-file.service.ts new file mode 100644 index 0000000..a58a660 --- /dev/null +++ b/src/app/json-file.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; +import { IFoodCard } from './ifood-card'; + +@Injectable({ + providedIn: 'root' +}) + +export class JsonFileService +{ + constructor(private sanitizer: DomSanitizer) {} + + public exportJson(foodcard: IFoodCard): SafeUrl + { + let json = JSON.stringify(foodcard); + return this.sanitizer.bypassSecurityTrustUrl( + "data:text/json;charset=UTF-8," + json); + } + + public importJson(event: any): IFoodCard + { + let foodcard: IFoodCard = { Titles: [] }; + + const reader = new FileReader(); + reader.onload = (e: any) => { + foodcard = JSON.parse(e.target.result); + } + reader.readAsText(event.target.files[0]); + + return foodcard; + } +}