]> gitweb.hhaalo.de Git - speisekarten-editor.git/commitdiff
add: json file service
authorBastian Dehn <hhaalo@arcor.de>
Thu, 9 Jun 2022 18:42:18 +0000 (20:42 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 9 Jun 2022 18:42:18 +0000 (20:42 +0200)
src/app/app.component.ts
src/app/json-file.service.spec.ts [new file with mode: 0644]
src/app/json-file.service.ts [new file with mode: 0644]

index 2e1c266ae8f6782940f8ce761e9330357b386c83..13ef1bd748ec4e40629737c21fcded0f9daf82f1 100644 (file)
@@ -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 (file)
index 0000000..1f1ac7c
--- /dev/null
@@ -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 (file)
index 0000000..a58a660
--- /dev/null
@@ -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;
+       }
+}