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',
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
--- /dev/null
+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();
+ });
+});
--- /dev/null
+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;
+ }
+}