From 39f9fcb303924c3f9dd8fce3f332d4bc4aa14a9d Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 12 Apr 2022 19:01:22 +0200 Subject: Reorganizovani su item-dataset, item-model, my-datasets, my-models. Dodat je yes-no-dialog. 123 --- .../item-dataset/item-dataset.component.css | 23 ++++++++ .../item-dataset/item-dataset.component.html | 62 +++++++++++++++----- .../item-dataset/item-dataset.component.ts | 8 ++- .../_elements/item-model/item-model.component.css | 23 ++++++++ .../_elements/item-model/item-model.component.html | 67 +++++++++++++++++++--- .../_elements/item-model/item-model.component.ts | 15 +++++ 6 files changed, 176 insertions(+), 22 deletions(-) (limited to 'frontend/src/app/_elements') diff --git a/frontend/src/app/_elements/item-dataset/item-dataset.component.css b/frontend/src/app/_elements/item-dataset/item-dataset.component.css index e69de29b..1457311f 100644 --- a/frontend/src/app/_elements/item-dataset/item-dataset.component.css +++ b/frontend/src/app/_elements/item-dataset/item-dataset.component.css @@ -0,0 +1,23 @@ +.card{ + margin-top:10%; + padding: 0; +} +.p-2{ + margin: 0; + padding: 0; +} +hr{ + margin: 0; + padding: 0; +} +b{ + margin-left: 5px; + margin-right: 10px; +} +th{ + margin: 10px; + padding: 10px; +} +p{ + text-align: justify; +} \ No newline at end of file diff --git a/frontend/src/app/_elements/item-dataset/item-dataset.component.html b/frontend/src/app/_elements/item-dataset/item-dataset.component.html index dc4221f4..142a9194 100644 --- a/frontend/src/app/_elements/item-dataset/item-dataset.component.html +++ b/frontend/src/app/_elements/item-dataset/item-dataset.component.html @@ -1,16 +1,50 @@
-
- {{dataset.name}} +
+ +
Naziv
+
{{dataset.name}}
+
+
+ Opis +

{{dataset.description}}opis1234564654768798768

+
+
+
+ + +
+
+ + + +
-
-

- {{dataset.description}} -

- - - - - -
{{column}}
-
-
\ No newline at end of file +
+
+ +
+ + + + + +
{{column}}
+
+
+ + + + +
+ + + + Kreirano{{dataset.dateCreated |date}}
+ + + Poslednja izmena{{dataset.lastUpdated |date}}
+ +
+ \ No newline at end of file diff --git a/frontend/src/app/_elements/item-dataset/item-dataset.component.ts b/frontend/src/app/_elements/item-dataset/item-dataset.component.ts index e12de34d..320cb10f 100644 --- a/frontend/src/app/_elements/item-dataset/item-dataset.component.ts +++ b/frontend/src/app/_elements/item-dataset/item-dataset.component.ts @@ -9,7 +9,13 @@ import Dataset from 'src/app/_data/Dataset'; export class ItemDatasetComponent { @Input() dataset: Dataset = new Dataset(); - + + isShowDiv = true; + toggleDisplayDiv() { + this.isShowDiv = !this.isShowDiv; + } constructor() { } + } + diff --git a/frontend/src/app/_elements/item-model/item-model.component.css b/frontend/src/app/_elements/item-model/item-model.component.css index e69de29b..5ea24c72 100644 --- a/frontend/src/app/_elements/item-model/item-model.component.css +++ b/frontend/src/app/_elements/item-model/item-model.component.css @@ -0,0 +1,23 @@ +.card{ + margin: 0.5rem; + padding: 0; +} +.p-2{ + margin: 0; + padding: 0; +} +hr{ + margin: 0; + padding: 0; +} +b{ + margin-left: 5px; + margin-right: 10px; +} +th{ + margin: 10px; + padding: 10px; +} +p{ + text-align: justify; +} \ No newline at end of file diff --git a/frontend/src/app/_elements/item-model/item-model.component.html b/frontend/src/app/_elements/item-model/item-model.component.html index 695c580e..c64f8ca1 100644 --- a/frontend/src/app/_elements/item-model/item-model.component.html +++ b/frontend/src/app/_elements/item-model/item-model.component.html @@ -1,13 +1,66 @@
-
- {{model.name}} +
+ +
Naziv
+
{{model.name}}
-
+
+ +
+ Opis

- {{"Opis: "+ model.description}}
- {{"Datum kreiranja: " + model.dateCreated}}
- {{"Poslednje ažuriranje: " + model.lastUpdated}}
+ {{model.description}}opis1234564654768798768

- +
+ +
+ + + + +
+ + + + Kreirano{{model.dateCreated |date}}
+ + + Poslednja izmena{{model.lastUpdated |date}}
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + +
Tip problema{{model.type}}
Optimizator{{model.optimizer}}
Funkcija gubitka{{model.lossFunction}}
Batch size{{model.batchSize}}
Broj epoha{{model.epochs}}
+ +
\ No newline at end of file diff --git a/frontend/src/app/_elements/item-model/item-model.component.ts b/frontend/src/app/_elements/item-model/item-model.component.ts index 7f85f43f..b837667b 100644 --- a/frontend/src/app/_elements/item-model/item-model.component.ts +++ b/frontend/src/app/_elements/item-model/item-model.component.ts @@ -9,10 +9,25 @@ import Model from 'src/app/_data/Model'; export class ItemModelComponent implements OnInit { @Input() model: Model = new Model(); + isShowDiv = true; + randomOrd=''; + toggleDisplayDiv() { + this.isShowDiv = !this.isShowDiv; + } + constructor() { } ngOnInit(): void { + /*if(this.model.randomOrder) + { + this.randomOrd='Da'; + } + else + { + this.randomOrd='Ne'; + } +*/ } } -- cgit v1.2.3 From a2275d2796331ff824f0f3ce05b9c2f92ad728c8 Mon Sep 17 00:00:00 2001 From: Danijel Anđelković Date: Tue, 12 Apr 2022 21:12:10 +0200 Subject: Ispravio datatable komponentu koja se nije ucitavala za postojeci dataset. Dodao broj redova u klasu dataset posto vise nije isti kao broj elemenata podataka koje prikazujemo. --- backend/api/api/Controllers/FileController.cs | 4 +- backend/api/api/Models/Dataset.cs | 1 + frontend/src/app/_data/Dataset.ts | 1 + .../add-new-dataset/add-new-dataset.component.html | 4 +- .../add-new-dataset/add-new-dataset.component.ts | 86 ++++++++++------------ .../dataset-load/dataset-load.component.html | 2 +- .../dataset-load/dataset-load.component.ts | 45 ++++------- .../_elements/datatable/datatable.component.html | 70 +++++++++--------- .../app/_elements/datatable/datatable.component.ts | 18 +++-- .../src/app/experiment/experiment.component.html | 2 +- .../src/app/experiment/experiment.component.ts | 39 ++-------- 11 files changed, 118 insertions(+), 154 deletions(-) (limited to 'frontend/src/app/_elements') diff --git a/backend/api/api/Controllers/FileController.cs b/backend/api/api/Controllers/FileController.cs index 0be480f2..a5d0ae7e 100644 --- a/backend/api/api/Controllers/FileController.cs +++ b/backend/api/api/Controllers/FileController.cs @@ -121,9 +121,9 @@ namespace api.Controllers if (hasHeader) - return String.Join("", System.IO.File.ReadLines(filePath).Take(11)); + return String.Join("\n", System.IO.File.ReadLines(filePath).Take(11)); else - return String.Join("", System.IO.File.ReadLines(filePath).Take(10)); + return String.Join("\n", System.IO.File.ReadLines(filePath).Take(10)); } diff --git a/backend/api/api/Models/Dataset.cs b/backend/api/api/Models/Dataset.cs index 12dcfa08..47814449 100644 --- a/backend/api/api/Models/Dataset.cs +++ b/backend/api/api/Models/Dataset.cs @@ -25,6 +25,7 @@ namespace api.Models public bool hasHeader { get; set; } public ColumnInfo[] columnInfo { get; set; } + public int rowCount { get; set; } public int nullCols { get; set; } public int nullRows { get; set; } public bool isPreProcess { get; set; } diff --git a/frontend/src/app/_data/Dataset.ts b/frontend/src/app/_data/Dataset.ts index 87f27d12..732d1c56 100644 --- a/frontend/src/app/_data/Dataset.ts +++ b/frontend/src/app/_data/Dataset.ts @@ -15,6 +15,7 @@ export default class Dataset { public hasHeader: boolean = true, public columnInfo: ColumnInfo[] = [], + public rowCount: number = 0, public nullRows: number = 0, public nullCols: number = 0, public preview: string[][] = [[]] diff --git a/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.html b/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.html index eb68b54c..bff8b022 100644 --- a/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.html +++ b/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.html @@ -41,9 +41,9 @@
- +
-
+
diff --git a/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.ts b/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.ts index 7421fbcf..3adc16f3 100644 --- a/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.ts +++ b/frontend/src/app/_elements/add-new-dataset/add-new-dataset.component.ts @@ -4,7 +4,8 @@ import Dataset from 'src/app/_data/Dataset'; import { DatasetsService } from 'src/app/_services/datasets.service'; import { ModelsService } from 'src/app/_services/models.service'; import shared from 'src/app/Shared'; -import { DatatableComponent } from '../datatable/datatable.component'; +import { DatatableComponent, TableData } from '../datatable/datatable.component'; +import { CsvParseService } from 'src/app/_services/csv-parse.service'; @Component({ selector: 'app-add-new-dataset', @@ -14,13 +15,10 @@ import { DatatableComponent } from '../datatable/datatable.component'; export class AddNewDatasetComponent { @Output() newDatasetAdded = new EventEmitter(); - @ViewChild(DatatableComponent) datatable?: DatatableComponent; + @ViewChild(DatatableComponent) datatable!: DatatableComponent; delimiterOptions: Array = [",", ";", "\t", "razmak", "|"]; //podrazumevano "," - //hasHeader: boolean = true; - hasInput: boolean = false; - csvRecords: any[] = []; files: File[] = []; rowsNumber: number = 0; @@ -28,7 +26,9 @@ export class AddNewDatasetComponent { dataset: Dataset; //dodaj ! potencijalno - constructor(private ngxCsvParser: NgxCsvParser, private modelsService: ModelsService, private datasetsService: DatasetsService) { + tableData: TableData = new TableData(); + + constructor(private modelsService: ModelsService, private datasetsService: DatasetsService, private csv: CsvParseService) { this.dataset = new Dataset(); } @@ -39,12 +39,13 @@ export class AddNewDatasetComponent { if (this.files.length == 0 || this.files[0] == null) { //console.log("NEMA FAJLA"); //this.loaded.emit("not loaded"); - this.hasInput = false; + this.tableData.hasInput = false; return; } else - this.hasInput = true; + this.tableData.hasInput = true; + this.tableData.loaded = false; this.update(); } @@ -53,34 +54,27 @@ export class AddNewDatasetComponent { if (this.files.length < 1) return; - this.datatable!.loaded = false; - this.datatable!.hasInput = this.hasInput; - - this.ngxCsvParser.parse(this.files[0], { header: false, delimiter: (this.dataset.delimiter == "razmak") ? " " : (this.dataset.delimiter == "") ? "," : this.dataset.delimiter }) - .pipe().subscribe((result) => { - - console.log('Result', result); - if (result.constructor === Array) { - if(this.dataset.hasHeader) - this.csvRecords = result.splice(0,11); - else - this.csvRecords=result.splice(0,10); - if (this.dataset.hasHeader) - this.rowsNumber = this.csvRecords.length - 1; - else - this.rowsNumber = this.csvRecords.length; - this.colsNumber = this.csvRecords[0].length; - - if (this.dataset.hasHeader) - this.dataset.header = this.csvRecords[0]; - - this.datatable!.data = this.csvRecords; - this.datatable!.hasHeader = this.dataset.hasHeader; - this.datatable!.loaded = true; - } - }, (error: NgxCSVParserError) => { - console.log('Error', error); - }); + const fileReader = new FileReader(); + fileReader.onload = (e) => { + if (typeof fileReader.result === 'string') { + const result = this.csv.csvToArray(fileReader.result, (this.dataset.delimiter == "razmak") ? " " : (this.dataset.delimiter == "") ? "," : this.dataset.delimiter) + + if (this.dataset.hasHeader) + this.csvRecords = result.splice(0, 11); + else + this.csvRecords = result.splice(0, 10); + + this.colsNumber = result[0].length; + this.rowsNumber = result.length; + + this.tableData.data = this.csvRecords + this.tableData.hasHeader = this.dataset.hasHeader; + this.tableData.loaded = true; + this.tableData.numCols = this.colsNumber; + this.tableData.numRows = this.rowsNumber; + } + } + fileReader.readAsText(this.files[0]); } checkAccessible() { @@ -96,17 +90,17 @@ export class AddNewDatasetComponent { this.modelsService.uploadData(this.files[0]).subscribe((file) => { //console.log('ADD MODEL: STEP 2 - ADD DATASET WITH FILE ID ' + file._id); - this.dataset.fileId = file._id; - this.dataset.username = shared.username; - - this.datasetsService.addDataset(this.dataset).subscribe((dataset) => { - this.newDatasetAdded.emit("added"); - shared.openDialog("Obaveštenje", "Uspešno ste dodali novi izvor podataka u kolekciju. Molimo sačekajte par trenutaka da se procesira."); - }, (error) => { - shared.openDialog("Neuspeo pokušaj!", "Izvor podataka sa unetim nazivom već postoji u Vašoj kolekciji. Izmenite naziv ili iskoristite postojeći dataset."); - }); //kraj addDataset subscribe + this.dataset.fileId = file._id; + this.dataset.username = shared.username; + + this.datasetsService.addDataset(this.dataset).subscribe((dataset) => { + this.newDatasetAdded.emit("added"); + shared.openDialog("Obaveštenje", "Uspešno ste dodali novi izvor podataka u kolekciju. Molimo sačekajte par trenutaka da se procesira."); + }, (error) => { + shared.openDialog("Neuspeo pokušaj!", "Izvor podataka sa unetim nazivom već postoji u Vašoj kolekciji. Izmenite naziv ili iskoristite postojeći dataset."); + }); //kraj addDataset subscribe }, (error) => { - + }); //kraj uploadData subscribe } diff --git a/frontend/src/app/_elements/dataset-load/dataset-load.component.html b/frontend/src/app/_elements/dataset-load/dataset-load.component.html index 09487b3b..6ab58021 100644 --- a/frontend/src/app/_elements/dataset-load/dataset-load.component.html +++ b/frontend/src/app/_elements/dataset-load/dataset-load.component.html @@ -30,7 +30,7 @@
- +
diff --git a/frontend/src/app/_elements/dataset-load/dataset-load.component.ts b/frontend/src/app/_elements/dataset-load/dataset-load.component.ts index 7329033c..dc78ab77 100644 --- a/frontend/src/app/_elements/dataset-load/dataset-load.component.ts +++ b/frontend/src/app/_elements/dataset-load/dataset-load.component.ts @@ -3,7 +3,7 @@ import { AddNewDatasetComponent } from '../add-new-dataset/add-new-dataset.compo import { ModelsService } from 'src/app/_services/models.service'; import shared from 'src/app/Shared'; import Dataset from 'src/app/_data/Dataset'; -import { DatatableComponent } from 'src/app/_elements/datatable/datatable.component'; +import { DatatableComponent, TableData } from 'src/app/_elements/datatable/datatable.component'; import { DatasetsService } from 'src/app/_services/datasets.service'; import { CsvParseService } from 'src/app/_services/csv-parse.service'; import { Output, EventEmitter } from '@angular/core'; @@ -17,8 +17,8 @@ export class DatasetLoadComponent { @Output() selectedDatasetChangeEvent = new EventEmitter(); - @ViewChild(AddNewDatasetComponent) addNewDatasetComponent?: AddNewDatasetComponent; - @ViewChild(AddNewDatasetComponent) datatable?: DatatableComponent; + @ViewChild(AddNewDatasetComponent) addNewDatasetComponent!: AddNewDatasetComponent; + @ViewChild(AddNewDatasetComponent) datatable!: DatatableComponent; datasetLoaded: boolean = false; selectedDatasetLoaded: boolean = false; @@ -27,10 +27,8 @@ export class DatasetLoadComponent { myDatasets?: Dataset[]; existingDatasetSelected: boolean = false; selectedDataset?: Dataset; - otherDataset?: Dataset; - otherDatasetFile?: any[]; - datasetFile?: any[]; - datasetHasHeader?: boolean = true; + + tableData: TableData = new TableData(); term: string = ""; @@ -63,27 +61,20 @@ export class DatasetLoadComponent { this.selectedDataset = dataset; this.selectedDatasetLoaded = false; this.existingDatasetSelected = true; - this.datasetHasHeader = this.selectedDataset.hasHeader; + this.tableData.hasHeader = this.selectedDataset.hasHeader; + + this.tableData.hasInput = true; + this.tableData.loaded = false; this.datasets.getDatasetFile(dataset.fileId).subscribe((file: string | undefined) => { if (file) { - console.log(file); - this.datatable!.hasInput = true; - this.datatable!.loaded = true; - this.datasetFile = this.csv.csvToArray(file, (dataset.delimiter == "razmak") ? " " : (dataset.delimiter == "") ? "," : dataset.delimiter); - /*for (let i = this.datasetFile.length - 1; i >= 0; i--) { //moguce da je vise redova na kraju fajla prazno i sl. - if (this.datasetFile[i].length != this.datasetFile[0].length) - this.datasetFile[i].pop(); - else - break; //nema potrebe dalje - }*/ - console.log(this.datatable!.data); - console.log(this.datasetFile); - console.log(this.datatable!.hasInput); + this.tableData.loaded = true; + this.tableData.numRows = this.selectedDataset!.rowCount; + this.tableData.numCols = this.selectedDataset!.columnInfo.length; + this.tableData.data = this.csv.csvToArray(file, (dataset.delimiter == "razmak") ? " " : (dataset.delimiter == "") ? "," : dataset.delimiter); //this.resetCbsAndRbs(); //TREBA DA SE DESI //this.refreshThreeNullValueRadioOptions(); //TREBA DA SE DESI this.selectedDatasetLoaded = true; - //this.scrollToNextForm(); this.selectedDatasetChangeEvent.emit(this.selectedDataset); } @@ -91,17 +82,7 @@ export class DatasetLoadComponent { } resetSelectedDataset(): boolean { - const temp = this.selectedDataset; - this.selectedDataset = this.otherDataset; - this.otherDataset = temp; - const tempFile = this.datasetFile; - this.datasetFile = this.otherDatasetFile; - this.otherDatasetFile = tempFile; - this.selectedDatasetChangeEvent.emit(this.selectedDataset); - return true; } - - } diff --git a/frontend/src/app/_elements/datatable/datatable.component.html b/frontend/src/app/_elements/datatable/datatable.component.html index b6cbd303..8db62aff 100644 --- a/frontend/src/app/_elements/datatable/datatable.component.html +++ b/frontend/src/app/_elements/datatable/datatable.component.html @@ -1,39 +1,43 @@ -PRE IFA -{{hasInput}} -
- PROSLO IF -
-
+
+
-
- - - - - - - - - - - -
{{item}}
{{col}}
- - - - - - - -
{{col}}
+
+
+
+ Tabela {{tableData.numCols}}x{{tableData.numRows}} +
+
+
+ + + + + + + + + + + + + + +
{{item}}
{{col}}
+ {{tableData.numRows - 11}} redova...
+ + + + + + + + + +
{{col}}
+ {{tableData.numRows - 10}} redova...
+
- -
-
- {{data.length - 1}} x {{data[0].length}} - {{data.length}} x {{data[0].length}} -
\ No newline at end of file diff --git a/frontend/src/app/_elements/datatable/datatable.component.ts b/frontend/src/app/_elements/datatable/datatable.component.ts index 19fb204e..82374f4d 100644 --- a/frontend/src/app/_elements/datatable/datatable.component.ts +++ b/frontend/src/app/_elements/datatable/datatable.component.ts @@ -7,12 +7,7 @@ import { Component, Input, OnInit } from '@angular/core'; }) export class DatatableComponent implements OnInit { - @Input() hasHeader?: boolean = true; - - @Input() data?: any[] = []; - - hasInput = false; - loaded = false; + @Input() tableData!: TableData; constructor() { } @@ -20,3 +15,14 @@ export class DatatableComponent implements OnInit { } } + +export class TableData { + constructor( + public hasHeader = true, + public hasInput = false, + public loaded = false, + public numRows = 0, + public numCols = 0, + public data?: any[][] + ) { } +} diff --git a/frontend/src/app/experiment/experiment.component.html b/frontend/src/app/experiment/experiment.component.html index 6020cab5..36cf9eda 100644 --- a/frontend/src/app/experiment/experiment.component.html +++ b/frontend/src/app/experiment/experiment.component.html @@ -13,7 +13,7 @@