From 2477f1796ba88ab1ae7d8aa869a55a8b37d1d8bb Mon Sep 17 00:00:00 2001 From: Danijel Anđelković Date: Thu, 12 May 2022 12:49:06 +0200 Subject: Promeni hovere tako da ne menjaju glavni prikaz komponenti (folder, column-table). Pomerio dugme za pozadinu u centar tako da se ne preklapa sa notifikacijama. --- .../column-table/column-table.component.ts | 21 ++-- .../src/app/_elements/folder/folder.component.ts | 117 +++++++++++---------- 2 files changed, 68 insertions(+), 70 deletions(-) (limited to 'frontend/src/app/_elements') diff --git a/frontend/src/app/_elements/column-table/column-table.component.ts b/frontend/src/app/_elements/column-table/column-table.component.ts index d61c2537..217eda30 100644 --- a/frontend/src/app/_elements/column-table/column-table.component.ts +++ b/frontend/src/app/_elements/column-table/column-table.component.ts @@ -60,17 +60,16 @@ export class ColumnTableComponent implements AfterViewInit { }); } - updatePieChart(){ + updatePieChart() { //min: number, max: number, q1: number, q3: number, median: number - let i=0; + let i = 0; const pieChart = this.piechartComp.toArray(); - this.dataset?.columnInfo.forEach(colInfo => - { if (this.experiment.columnTypes[i] == ColumnType.categorical) - { - pieChart[i].updatePieChart(colInfo!.uniqueValues, colInfo.uniqueValuesPercent); - i++; - } - }); + this.dataset?.columnInfo.forEach(colInfo => { + if (this.experiment.columnTypes[i] == ColumnType.categorical) { + pieChart[i].updatePieChart(colInfo!.uniqueValues, colInfo.uniqueValuesPercent); + i++; + } + }); } loadDataset(dataset: Dataset) { @@ -213,7 +212,7 @@ export class ColumnTableComponent implements AfterViewInit { if (this.experiment != undefined && this.dataset != undefined) { for (let i = 0; i < this.dataset.columnInfo.length; i++) { if (this.experiment.columnTypes[i] == ColumnType.categorical && this.dataset.columnInfo[i].columnName != this.experiment.outputColumn) //promeni - this.experiment.encodings[i].encoding = encodingType; + this.experiment.encodings[i].encoding = encodingType; } this.columnTableChangeDetected(); } @@ -380,10 +379,8 @@ export class ColumnTableComponent implements AfterViewInit { hoverOverTab(index: number) { if (index < 0) { this.hoveringOverTab = null; - this.tabToDisplay = this.selectedTab.value; } else { this.hoveringOverTab = this.tabs[index]; - this.tabToDisplay = this.tabs[index].value; } } diff --git a/frontend/src/app/_elements/folder/folder.component.ts b/frontend/src/app/_elements/folder/folder.component.ts index e60f041e..dbbc55e7 100644 --- a/frontend/src/app/_elements/folder/folder.component.ts +++ b/frontend/src/app/_elements/folder/folder.component.ts @@ -11,6 +11,8 @@ import { ExperimentsService } from 'src/app/_services/experiments.service'; import { PredictorsService } from 'src/app/_services/predictors.service'; import { SignalRService } from 'src/app/_services/signal-r.service'; import { FormModelComponent } from '../form-model/form-model.component'; +import { Router } from '@angular/router'; +import Predictor from 'src/app/_data/Predictor'; @Component({ selector: 'app-folder', @@ -44,7 +46,7 @@ export class FolderComponent implements AfterViewInit { searchTerm: string = ''; - constructor(private datasetsService: DatasetsService, private experimentsService: ExperimentsService, private modelsService: ModelsService, private predictorsService: PredictorsService, private signalRService: SignalRService) { + constructor(private datasetsService: DatasetsService, private experimentsService: ExperimentsService, private modelsService: ModelsService, private predictorsService: PredictorsService, private signalRService: SignalRService, private router: Router) { this.tabsToShow.forEach(tab => this.folders[tab] = []); } @@ -91,20 +93,23 @@ export class FolderComponent implements AfterViewInit { this.newFileSelected = true; this.listView = false; this.displayFile(); - if(this.type == FolderType.Dataset) + if (this.type == FolderType.Dataset) this.formDataset.clear(); } selectFile(file?: FolderFile) { this.selectedFile = file; this.fileToDisplay = file; + if (this.type == FolderType.Experiment && file) { + this.router.navigate(['/experiment'/*, file._id*/]) + } this.newFileSelected = false; this.listView = false; this.selectedFileChanged.emit(this.selectedFile); this.selectTab(TabType.File); this.displayFile(); - if(this.type == FolderType.Dataset) + if (this.type == FolderType.Dataset) this.formDataset.loadExisting(); } @@ -122,7 +127,7 @@ export class FolderComponent implements AfterViewInit { _initialized: boolean = false; - refreshFiles(selectedDatasetId: string | null) { + refreshFiles(selectedDatasetId: string | null = null, selectedModelId: string | null = null) { this.files = [] this.filteredFiles.length = 0; this.folders[TabType.NewFile] = []; @@ -131,33 +136,45 @@ export class FolderComponent implements AfterViewInit { this.folders[tab] = []; }); - this.datasetsService.getMyDatasets().subscribe((datasets) => { - this.folders[TabType.MyDatasets] = datasets; - if (selectedDatasetId) { - this.selectFile(datasets.filter(x => x._id == selectedDatasetId)[0]); - } - }); - - this.experimentsService.getMyExperiments().subscribe((experiments) => { - this.folders[TabType.MyExperiments] = experiments; - }); - - this.datasetsService.getPublicDatasets().subscribe((datasets) => { - this.folders[TabType.PublicDatasets] = datasets; - }); - - this.modelsService.getMyModels().subscribe((models) => { - this.folders[TabType.MyModels] = models; - }); + switch (this.type) { + case FolderType.Dataset: + this.datasetsService.getMyDatasets().subscribe((datasets) => { + this.folders[TabType.MyDatasets] = datasets; + if (selectedDatasetId) { + this.selectFile(datasets.filter(x => x._id == selectedDatasetId)[0]); + } + }); + this.datasetsService.getPublicDatasets().subscribe((datasets) => { + this.folders[TabType.PublicDatasets] = datasets; + }); + break; - /*this.modelsService.getMyModels().subscribe((models) => { - this.folders[TabType.PublicModels] = models; - });*/ - this.folders[TabType.PublicModels] = []; + case FolderType.Model: + this.modelsService.getMyModels().subscribe((models) => { + this.folders[TabType.MyModels] = models; + if (selectedModelId) { + this.selectFile(models.filter(x => x._id == selectedModelId)[0]); + } + }); + /*this.modelsService.getMyModels().subscribe((models) => { + this.folders[TabType.PublicModels] = models; + });*/ + this.folders[TabType.PublicModels] = []; + break; - this.experimentsService.getMyExperiments().subscribe((experiments) => { - this.folders[TabType.MyExperiments] = experiments; - }); + case FolderType.Experiment: + this.experimentsService.getMyExperiments().subscribe((experiments) => { + this.folders[TabType.MyExperiments] = experiments; + }); + this.predictorsService.getMyPredictors().subscribe((predictors) => { + this.predictors = predictors; + console.log(predictors); + }); + break; + default: + console.error("Bad folder type."); + break; + } if (!this._initialized) { this.files = this.folders[this.startingTab]; @@ -169,13 +186,15 @@ export class FolderComponent implements AfterViewInit { this.searchTermsChanged(); } + predictors: Predictor[] = []; + saveNewFile() { switch (this.type) { case FolderType.Dataset: this.formDataset!.uploadDataset((dataset: Dataset) => { this.newFile = undefined; Shared.openDialog("Obaveštenje", "Uspešno ste dodali novi izvor podataka u kolekciju. Molimo sačekajte par trenutaka da se procesira."); - this.refreshFiles(null); + this.refreshFiles(); }, () => { Shared.openDialog("Neuspeo pokušaj!", "Izvor podataka sa unetim nazivom već postoji u Vašoj kolekciji. Izmenite naziv ili iskoristite postojeći dataset."); @@ -185,7 +204,7 @@ export class FolderComponent implements AfterViewInit { this.modelsService.addModel(this.formModel.newModel).subscribe(model => { this.newFile = undefined; Shared.openDialog("Obaveštenje", "Uspešno ste dodali novu konfiguraciju neuronske mreže u kolekciju."); - this.refreshFiles(null); // todo select model + this.refreshFiles(null, model._id); // todo select model }, (err) => { Shared.openDialog("Neuspeo pokušaj!", "Konfiguracija neuronske mreže sa unetim nazivom već postoji u Vašoj kolekciji. Izmenite naziv ili iskoristite postojeću konfiguraciju."); }); @@ -193,20 +212,6 @@ export class FolderComponent implements AfterViewInit { } } - - /*calcZIndex(i: number) { - let zIndex = (this.files.length - i - 1) - if (this.selectedFileIndex == i) - zIndex = this.files.length + 2; - if (this.hoveringOverFileIndex == i) - zIndex = this.files.length + 3; - return zIndex; - } - - newFileZIndex() { - return (this.files.length + 1); - }*/ - clearSearchTerm() { this.searchTerm = ''; this.searchTermsChanged(); @@ -232,10 +237,6 @@ export class FolderComponent implements AfterViewInit { listView: boolean = true; - toggleListView() { - this.listView = !this.listView; - } - deleteFile(file: FolderFile, event: Event) { event.stopPropagation(); //console.log('delete'); @@ -349,16 +350,16 @@ export class FolderComponent implements AfterViewInit { } hoverOverTab(tab: TabType) { - this.listView = this.getListView(tab); - this.privacy = this.getPrivacy(tab); + // this.listView = this.getListView(tab); + // this.privacy = this.getPrivacy(tab); this.hoverTab = tab; - if (tab == TabType.None) { - this.listView = this.getListView(this.selectedTab); - this.files = this.folders[this.selectedTab]; - } else { - this.files = this.folders[tab]; - } - this.searchTermsChanged(); + // if (tab == TabType.None) { + // this.listView = this.getListView(this.selectedTab); + // this.files = this.folders[this.selectedTab]; + // } else { + // this.files = this.folders[tab]; + // } + // this.searchTermsChanged(); } updateExperiment() { -- cgit v1.2.3 From e6ef814ddf9185c1dc1130dbcfe9b9fd7aa9071e Mon Sep 17 00:00:00 2001 From: Danijel Anđelković Date: Thu, 12 May 2022 13:38:52 +0200 Subject: Dodao prikaz treniranih modela u listi experimenta za svaki model. --- frontend/src/app/_data/Predictor.ts | 18 ++-- .../src/app/_elements/folder/folder.component.css | 9 ++ .../src/app/_elements/folder/folder.component.html | 41 ++++++-- .../src/app/_elements/folder/folder.component.ts | 113 +++++++++++++-------- .../src/app/_pages/archive/archive.component.html | 2 +- .../src/app/_pages/archive/archive.component.ts | 2 + .../filter-datasets/filter-datasets.component.ts | 48 --------- .../src/app/_pages/settings/settings.component.css | 0 .../app/_pages/settings/settings.component.html | 1 - .../app/_pages/settings/settings.component.spec.ts | 25 ----- .../src/app/_pages/settings/settings.component.ts | 15 --- 11 files changed, 127 insertions(+), 147 deletions(-) delete mode 100644 frontend/src/app/_pages/filter-datasets/filter-datasets.component.ts delete mode 100644 frontend/src/app/_pages/settings/settings.component.css delete mode 100644 frontend/src/app/_pages/settings/settings.component.html delete mode 100644 frontend/src/app/_pages/settings/settings.component.spec.ts delete mode 100644 frontend/src/app/_pages/settings/settings.component.ts (limited to 'frontend/src/app/_elements') diff --git a/frontend/src/app/_data/Predictor.ts b/frontend/src/app/_data/Predictor.ts index e15ae8f9..55d610ed 100644 --- a/frontend/src/app/_data/Predictor.ts +++ b/frontend/src/app/_data/Predictor.ts @@ -1,22 +1,28 @@ -export default class Predictor { - _id: string = ''; +import { FolderFile } from "./FolderFile"; + +export default class Predictor extends FolderFile { constructor( - public name: string = 'Novi prediktor', + name: string = 'Novi prediktor', public description: string = '', public inputs: string[] = [], public output: string = '', public isPublic: boolean = false, public accessibleByLink: boolean = false, - public dateCreated: Date = new Date(), + dateCreated: Date = new Date(), + lastUpdated: Date = new Date(), public uploaderId: string = '', //public finalMetrics: Metric[] = [] - ) { } + public experimentId: string = "", + public modelId: string = "", + ) { + super(name, dateCreated, lastUpdated); + } } export class Metric { constructor( public name: string = '', public jsonValue: string = '' - ) {} + ) { } } \ No newline at end of file diff --git a/frontend/src/app/_elements/folder/folder.component.css b/frontend/src/app/_elements/folder/folder.component.css index 62324d62..ada2dba0 100644 --- a/frontend/src/app/_elements/folder/folder.component.css +++ b/frontend/src/app/_elements/folder/folder.component.css @@ -210,4 +210,13 @@ .form-hidden { display: none; +} + +.predictor { + text-decoration: underline; +} + +.highlight-exp { + /*font-size: 16px;*/ + font-weight: 700; } \ No newline at end of file diff --git a/frontend/src/app/_elements/folder/folder.component.html b/frontend/src/app/_elements/folder/folder.component.html index bff066be..8896e7e5 100644 --- a/frontend/src/app/_elements/folder/folder.component.html +++ b/frontend/src/app/_elements/folder/folder.component.html @@ -67,17 +67,38 @@
-