From 4c8f46e94fe97107c7184bfe60cf067bc4e7f246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Pu=C5=A1?= <pusradek@fit.cvut.cz> Date: Wed, 25 Dec 2019 04:16:53 +0100 Subject: [PATCH] reload after import /delete, interface created as separate part of project (each interface = file) --- .../src/app/helpers/datachange.service.ts | 36 ++++++++++++++++ .../file-history/file-history.component.ts | 42 ++++--------------- .../components/import/import.component.ts | 24 ++++------- .../home/components/import/import.service.ts | 11 ++--- .../home/home-chart-definitions.service.ts | 5 +++ .../ClientApp/src/app/home/home.module.ts | 2 + .../ClientApp/src/app/interfaces/IFile.js | 3 ++ .../ClientApp/src/app/interfaces/IFile.js.map | 1 + .../ClientApp/src/app/interfaces/IFile.ts | 5 +++ .../src/app/interfaces/IRequestFiles.js | 3 ++ .../src/app/interfaces/IRequestFiles.js.map | 1 + .../src/app/interfaces/IRequestFiles.ts | 4 ++ Core/Core/Core.csproj | 4 ++ 13 files changed, 85 insertions(+), 56 deletions(-) create mode 100644 Core/Core/ClientApp/src/app/helpers/datachange.service.ts create mode 100644 Core/Core/ClientApp/src/app/interfaces/IFile.js create mode 100644 Core/Core/ClientApp/src/app/interfaces/IFile.js.map create mode 100644 Core/Core/ClientApp/src/app/interfaces/IFile.ts create mode 100644 Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js create mode 100644 Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js.map create mode 100644 Core/Core/ClientApp/src/app/interfaces/IRequestFiles.ts diff --git a/Core/Core/ClientApp/src/app/helpers/datachange.service.ts b/Core/Core/ClientApp/src/app/helpers/datachange.service.ts new file mode 100644 index 0000000..d915c53 --- /dev/null +++ b/Core/Core/ClientApp/src/app/helpers/datachange.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { HomeChartDefinitionsService } from '../home/home-chart-definitions.service'; +import { MatTableDataSource } from '@angular/material'; +import { HttpClient } from '@angular/common/http'; +import { IFile } from '../interfaces/IFile'; +import { IRequestFiles } from '../interfaces/IRequestFiles'; + +@Injectable() +export class DatachangeService { + private ImportHistoryTable: MatTableDataSource<IFile>; + + constructor(private ChartService: HomeChartDefinitionsService, private HttpClient: HttpClient) { + this.ImportHistoryTable = new MatTableDataSource<IFile>([]); + this.ReloadImportHistoryTableData(); + } + + public GetImportHistoryTable(): MatTableDataSource<IFile> { return this.ImportHistoryTable } + + public OnDataChange(): void { + this.ReloadImportHistoryTableData(); + this.ChartService.ReloadAll(); + } + + private ReloadImportHistoryTableData(): void { + this.HttpClient.get<IRequestFiles>('api/Import').subscribe(res => { + console.log('Get import data: ', res); + let fileArray = new Array<IFile>(); + for (let i: number = 0; i < res.imports.length; i++) { + fileArray.push({ position: i + 1, id: res.imports[i].id, name: res.imports[i].name }); + } + this.ImportHistoryTable.data = fileArray; + }, error => { + console.error("Get FilesData error:", error); + }); + } +} diff --git a/Core/Core/ClientApp/src/app/home/components/file-history/file-history.component.ts b/Core/Core/ClientApp/src/app/home/components/file-history/file-history.component.ts index 41e9db8..aee53c7 100644 --- a/Core/Core/ClientApp/src/app/home/components/file-history/file-history.component.ts +++ b/Core/Core/ClientApp/src/app/home/components/file-history/file-history.component.ts @@ -2,6 +2,8 @@ import { Component, ViewChild, OnInit } from '@angular/core'; import { MatPaginator } from '@angular/material/paginator'; import { MatTableDataSource } from '@angular/material/table'; import { HttpClient } from '@angular/common/http'; +import { DatachangeService } from '../../../helpers/datachange.service'; +import { IFile } from '../../../interfaces/IFile'; @Component({ selector: 'app-file-history', @@ -12,49 +14,23 @@ import { HttpClient } from '@angular/common/http'; export class FileHistoryComponent implements OnInit { @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator; - dataSource: MatTableDataSource<File>; + dataSource: MatTableDataSource<IFile>; displayedColumns: string[] = ['position', 'name', 'delete']; ngOnInit() { this.dataSource.paginator = this.paginator; } - constructor(private HttpClient: HttpClient) { - this.GetData(); - this.dataSource = new MatTableDataSource<File>([]); + constructor(private HttpClient: HttpClient, private DatachangeService: DatachangeService) { + this.dataSource = this.DatachangeService.GetImportHistoryTable(); } - public GetData() { - this.HttpClient.get<RequestFiles>('api/Import').subscribe(res => { - console.log('Get import data: ', res); - let fileArray = new Array<File>(); - for (let i: number = 0; i < res.imports.length; i++) { - fileArray.push({ position: i + 1, id: res.imports[i].id, name: res.imports[i].name }); - } - this.dataSource.data = fileArray; - }, error => { - console.error("Get FilesData error:", error); - }); - } - - onDeleteFile(element: File): void { - console.log("delete button clicked:", element); - - this.HttpClient.delete('api/Import/'+ element.id).subscribe(res => { - console.log('Deleting file: ', res); + onDeleteFile(element: IFile): void { + this.HttpClient.delete('api/Import/' + element.id).subscribe(res => { + console.log('Deleted file: ', res); + this.DatachangeService.OnDataChange(); }, error => { console.error("Deleting file error:", error); }); } } - -export interface File { - position: number; - id: number; - name: string; -} - -export interface RequestFiles { - count: number; - imports: Array<{ id: number, name: string }> -} diff --git a/Core/Core/ClientApp/src/app/home/components/import/import.component.ts b/Core/Core/ClientApp/src/app/home/components/import/import.component.ts index 50fa0b7..ce79361 100644 --- a/Core/Core/ClientApp/src/app/home/components/import/import.component.ts +++ b/Core/Core/ClientApp/src/app/home/components/import/import.component.ts @@ -1,25 +1,19 @@ -import { Component, Inject } from '@angular/core'; +import { Component} from '@angular/core'; import { ImportService } from './import.service'; -import { HttpClient } from '@angular/common/http'; +import { DatachangeService } from '../../../helpers/datachange.service'; @Component({ - selector: 'app-import', - templateUrl: './import.component.html', - styleUrls: ['./import.component.css'] + selector: 'app-import', + templateUrl: './import.component.html', + styleUrls: ['./import.component.css'] }) /** Import component*/ export class ImportComponent { - importService: ImportService; - Http: HttpClient; - fileToUpload: File = null; /** Import ctor */ - constructor(http: HttpClient) { - this.Http = http; - this.importService = new ImportService(http); - } - + constructor(private ImportService: ImportService, private DatachangeService: DatachangeService) { } + handleFileInput(files: FileList) { console.log('hanfleFileInput'); this.fileToUpload = files.item(0); @@ -27,8 +21,8 @@ export class ImportComponent { uploadFileToActivity() { console.log('uploadFileToActivity'); - this.importService.postFile(this.fileToUpload).subscribe(data => { - // do something, if upload success + this.ImportService.postFile(this.fileToUpload).subscribe(data => { + this.DatachangeService.OnDataChange(); }, error => { console.log(error); }); diff --git a/Core/Core/ClientApp/src/app/home/components/import/import.service.ts b/Core/Core/ClientApp/src/app/home/components/import/import.service.ts index 640d4dd..5e8df65 100644 --- a/Core/Core/ClientApp/src/app/home/components/import/import.service.ts +++ b/Core/Core/ClientApp/src/app/home/components/import/import.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Inject } from '@angular/core'; +import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; @@ -8,16 +8,11 @@ import { Observable } from 'rxjs'; ) export class ImportService { - httpClient: HttpClient; - importService: ImportService; - - constructor(http: HttpClient) { - this.httpClient = http; - } + constructor(private HttpClient: HttpClient) { } postFile(fileToUpload: File): Observable<Object> { const formData: FormData = new FormData(); formData.append('fileKey', fileToUpload, fileToUpload.name); - return this.httpClient.post('api/Import', formData); + return this.HttpClient.post('api/Import', formData); } } diff --git a/Core/Core/ClientApp/src/app/home/home-chart-definitions.service.ts b/Core/Core/ClientApp/src/app/home/home-chart-definitions.service.ts index 342f917..8e1c733 100644 --- a/Core/Core/ClientApp/src/app/home/home-chart-definitions.service.ts +++ b/Core/Core/ClientApp/src/app/home/home-chart-definitions.service.ts @@ -22,6 +22,11 @@ export class HomeChartDefinitionsService { public HistorySymbolTypePieChart: Chart; public ForecastPieChart: Chart; + public ReloadAll(): void { + this.ReloadHistoryChartSeries(); + this.ReloadForecastChartSeries(); + } + public ReloadHistoryChartSeries() { this.HistoryWeeksBarChart.removeSeries(0); diff --git a/Core/Core/ClientApp/src/app/home/home.module.ts b/Core/Core/ClientApp/src/app/home/home.module.ts index ab71765..07d8de9 100644 --- a/Core/Core/ClientApp/src/app/home/home.module.ts +++ b/Core/Core/ClientApp/src/app/home/home.module.ts @@ -16,6 +16,7 @@ import { MatTableModule, MatPaginatorModule, MatPaginatorIntl, MatButtonModule } import { HomeService } from "./home.service"; import { HomeChartDefinitionsService } from "./home-chart-definitions.service"; import { getCzechPaginatorIntl } from "../helpers/czech-paginator-intl"; +import { DatachangeService } from "../helpers/datachange.service"; @NgModule({ @@ -40,6 +41,7 @@ import { getCzechPaginatorIntl } from "../helpers/czech-paginator-intl"; ImportService, HomeService, HomeChartDefinitionsService, + DatachangeService, { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, { provide: MatPaginatorIntl, useValue: getCzechPaginatorIntl() } ] diff --git a/Core/Core/ClientApp/src/app/interfaces/IFile.js b/Core/Core/ClientApp/src/app/interfaces/IFile.js new file mode 100644 index 0000000..75a9226 --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IFile.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=IFile.js.map \ No newline at end of file diff --git a/Core/Core/ClientApp/src/app/interfaces/IFile.js.map b/Core/Core/ClientApp/src/app/interfaces/IFile.js.map new file mode 100644 index 0000000..3b38deb --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IFile.js","sourceRoot":"","sources":["IFile.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/Core/Core/ClientApp/src/app/interfaces/IFile.ts b/Core/Core/ClientApp/src/app/interfaces/IFile.ts new file mode 100644 index 0000000..46330b2 --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IFile.ts @@ -0,0 +1,5 @@ +export interface IFile { + position: number; + id: number; + name: string; +} diff --git a/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js new file mode 100644 index 0000000..203f275 --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=IRequestFiles.js.map \ No newline at end of file diff --git a/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js.map b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js.map new file mode 100644 index 0000000..af4dbe7 --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IRequestFiles.js","sourceRoot":"","sources":["IRequestFiles.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.ts b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.ts new file mode 100644 index 0000000..fa6a76d --- /dev/null +++ b/Core/Core/ClientApp/src/app/interfaces/IRequestFiles.ts @@ -0,0 +1,4 @@ +export interface IRequestFiles { + count: number; + imports: Array<{ id: number, name: string }> +} diff --git a/Core/Core/Core.csproj b/Core/Core/Core.csproj index 979fda8..47a988b 100644 --- a/Core/Core/Core.csproj +++ b/Core/Core/Core.csproj @@ -42,6 +42,8 @@ <None Remove="ClientApp\src\app\home\components\czech-paginator-intl.ts" /> <None Remove="ClientApp\src\app\home\home.module.ts" /> <None Remove="ClientApp\src\app\home\components\import\import.service.ts" /> + <None Remove="ClientApp\src\app\interfaces\IFile.ts" /> + <None Remove="ClientApp\src\app\interfaces\IRequestFiles.ts" /> <None Remove="ClientApp\src\app\login\login.service.ts" /> <None Remove="ClientApp\src\app\registration\registration.service.ts" /> </ItemGroup> @@ -59,6 +61,8 @@ <TypeScriptCompile Include="ClientApp\src\app\helpers\czech-paginator-intl.ts" /> <TypeScriptCompile Include="ClientApp\src\app\home\home.module.ts" /> <TypeScriptCompile Include="ClientApp\src\app\home\components\import\import.service.ts" /> + <TypeScriptCompile Include="ClientApp\src\app\interfaces\IFile.ts" /> + <TypeScriptCompile Include="ClientApp\src\app\interfaces\IRequestFiles.ts" /> <TypeScriptCompile Include="ClientApp\src\app\login\login.service.ts"> <SubType>Code</SubType> </TypeScriptCompile> -- GitLab