aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/api/api/Controllers/DatasetController.cs14
-rw-r--r--backend/api/api/Controllers/ExperimentController.cs32
-rw-r--r--backend/api/api/Controllers/ModelController.cs10
-rw-r--r--backend/api/api/Interfaces/IDatasetService.cs3
-rw-r--r--backend/api/api/Interfaces/IExperimentService.cs3
-rw-r--r--backend/api/api/Interfaces/IModelService.cs6
-rw-r--r--backend/api/api/Models/Model.cs2
-rw-r--r--backend/api/api/Services/DatasetService.cs31
-rw-r--r--backend/api/api/Services/ExperimentService.cs21
-rw-r--r--backend/api/api/Services/FillAnEmptyDb.cs10
-rw-r--r--backend/api/api/Services/ModelService.cs14
-rw-r--r--frontend/src/app/_data/Model.ts4
-rw-r--r--frontend/src/app/_elements/column-table/column-table.component.html27
-rw-r--r--frontend/src/app/_elements/column-table/column-table.component.ts34
-rw-r--r--frontend/src/app/_modals/save-experiment-dialog/save-experiment-dialog.component.html5
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.ts2
-rw-r--r--frontend/src/app/_services/models.service.ts5
17 files changed, 165 insertions, 58 deletions
diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs
index 58a903eb..1873d9ec 100644
--- a/backend/api/api/Controllers/DatasetController.cs
+++ b/backend/api/api/Controllers/DatasetController.cs
@@ -18,14 +18,14 @@ namespace api.Controllers
private readonly IFileService _fileService;
private IJwtToken jwtToken;
- public DatasetController(IDatasetService datasetService, IConfiguration configuration,IJwtToken Token,IMlConnectionService mlConnectionService, IFileService fileService)
+ public DatasetController(IDatasetService datasetService, IConfiguration configuration, IJwtToken Token, IMlConnectionService mlConnectionService, IFileService fileService)
{
_datasetService = datasetService;
_mlConnectionService = mlConnectionService;
_fileService = fileService;
jwtToken = Token;
}
-
+
public string getUserId()
{
string userId;
@@ -116,7 +116,7 @@ namespace api.Controllers
if (userId == null)
return BadRequest();
- var dataset = _datasetService.GetOneDataset(userId, name);
+ var dataset = _datasetService.GetOneDatasetN(userId, name);
if (dataset == null)
return NotFound($"Dataset with name = {name} not found or dataset is not public or not preprocessed");
@@ -129,11 +129,13 @@ namespace api.Controllers
public async Task<ActionResult<Dataset>> Post([FromBody] Dataset dataset)
{
string uploaderId = getUserId();
-
+
+ dataset.uploaderId = uploaderId;
+
//da li ce preko tokena da se ubaci username ili front salje
//dataset.username = usernameToken;
//username = "" ako je GUEST DODAO
- var existingDataset = _datasetService.GetOneDataset(dataset.uploaderId, dataset.name);
+ var existingDataset = _datasetService.GetOneDatasetN(dataset.uploaderId, dataset.name);
if (existingDataset != null)
return NotFound($"Dateset with name = {dataset.name} exisits");
@@ -142,7 +144,7 @@ namespace api.Controllers
FileModel fileModel = _fileService.getFile(dataset.fileId);
dataset.isPreProcess = false;
_datasetService.Create(dataset);
- _mlConnectionService.PreProcess(dataset,fileModel.path,uploaderId);
+ _mlConnectionService.PreProcess(dataset, fileModel.path, uploaderId);
return Ok();
}
}
diff --git a/backend/api/api/Controllers/ExperimentController.cs b/backend/api/api/Controllers/ExperimentController.cs
index eecbe756..1cac386a 100644
--- a/backend/api/api/Controllers/ExperimentController.cs
+++ b/backend/api/api/Controllers/ExperimentController.cs
@@ -53,6 +53,7 @@ namespace api.Controllers
return BadRequest();
experiment.uploaderId = uploaderId;
+
var existingExperiment = _experimentService.Get(uploaderId, experiment.name);
if(existingExperiment != null)
return NotFound($"Experiment with this name exists");
@@ -99,10 +100,10 @@ namespace api.Controllers
if (uploaderId == null)
return BadRequest();
- var existingDataset = _experimentService.GetOneExperiment(uploaderId, id);
+ var existingExperiment = _experimentService.GetOneExperiment(uploaderId, id);
//ne mora da se proverava
- if (existingDataset == null)
+ if (existingExperiment == null)
return NotFound($"Experiment with ID = {id} or user with ID = {uploaderId} not found");
experiment.lastUpdated = DateTime.UtcNow;
@@ -111,5 +112,32 @@ namespace api.Controllers
return Ok($"Experiment with ID = {id} updated");
}
+
+ // DELETE api/<ExperimentController>/name
+ [HttpDelete("{id}")]
+ [Authorize(Roles = "User")]
+ public ActionResult Delete(string id)
+ {
+ string uploaderId = getUserId();
+
+ if (uploaderId == null)
+ return BadRequest();
+
+ var experiment = _experimentService.GetOneExperiment(uploaderId, id);
+
+ if (experiment == null)
+ return NotFound($"Experiment with ID = {id} or user with ID = {uploaderId} not found");
+
+ _experimentService.Delete(experiment.uploaderId, experiment._id);
+
+ return Ok($"Experiment with ID = {id} deleted");
+
+ }
+
+ public void DeleteHelper(string uploaderId, string experimentId)
+ {
+ _experimentService.Delete(uploaderId, experimentId);
+ }
+
}
}
diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs
index d68e98e2..2916fa98 100644
--- a/backend/api/api/Controllers/ModelController.cs
+++ b/backend/api/api/Controllers/ModelController.cs
@@ -91,10 +91,12 @@ namespace api.Controllers
return Ok();
}
-
-
-
-
+ // GET: api/<ModelController>/publicmodels
+ [HttpGet("publicmodels")]
+ public ActionResult<List<Model>> GetPublicModels()
+ {
+ return _modelService.GetPublicModels();
+ }
// GET: api/<ModelController>/mymodels
[HttpGet("mymodels")]
diff --git a/backend/api/api/Interfaces/IDatasetService.cs b/backend/api/api/Interfaces/IDatasetService.cs
index f493a2ec..2f7d0010 100644
--- a/backend/api/api/Interfaces/IDatasetService.cs
+++ b/backend/api/api/Interfaces/IDatasetService.cs
@@ -5,7 +5,8 @@ namespace api.Services
{
public interface IDatasetService
{
- Dataset GetOneDataset(string userId, string name);
+ Dataset GetOneDataset(string userId, string id);
+ Dataset GetOneDatasetN(string userId, string name);
Dataset GetOneDataset(string id);
List<Dataset> SearchDatasets(string name);
List<Dataset> GetMyDatasets(string userId);
diff --git a/backend/api/api/Interfaces/IExperimentService.cs b/backend/api/api/Interfaces/IExperimentService.cs
index 2a69cff9..311560e8 100644
--- a/backend/api/api/Interfaces/IExperimentService.cs
+++ b/backend/api/api/Interfaces/IExperimentService.cs
@@ -8,8 +8,9 @@ namespace api.Services
public Experiment Get(string id);
public List<Experiment> GetMyExperiments(string id);
public Experiment Get(string uploaderId, string name);
- Experiment GetOneExperiment(string userId, string name);
+ Experiment GetOneExperiment(string userId, string id);
void Update(string userId, string id, Experiment experiment);
+ void Delete(string userId, string id);
}
} \ No newline at end of file
diff --git a/backend/api/api/Interfaces/IModelService.cs b/backend/api/api/Interfaces/IModelService.cs
index 00299979..8c4543de 100644
--- a/backend/api/api/Interfaces/IModelService.cs
+++ b/backend/api/api/Interfaces/IModelService.cs
@@ -3,14 +3,14 @@ using api.Models;
namespace api.Services
{
- public interface IModelService
- {
+ public interface IModelService
+ {
Model GetOneModel(string userId, string name);
Model GetOneModel(string id);
List<Model> GetMyModels(string userId);
List<Model> GetMyModelsByType(string userId, string problemType);
List<Model> GetLatestModels(string userId);
- //List<Model> GetPublicModels();
+ List<Model> GetPublicModels();
Model Create(Model model);
Model Replace(Model model);
void Update(string userId, string name, Model model);
diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs
index d8921713..f95be715 100644
--- a/backend/api/api/Models/Model.cs
+++ b/backend/api/api/Models/Model.cs
@@ -40,6 +40,8 @@ namespace api.Models
public bool randomOrder { get; set; }
public bool randomTestSet { get; set; }
public float randomTestSetDistribution { get; set; }
+ public bool isPublic { get; set; }
+ public bool accessibleByLink { get; set; }
}
public class Layer
diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs
index f39cac29..f38a363b 100644
--- a/backend/api/api/Services/DatasetService.cs
+++ b/backend/api/api/Services/DatasetService.cs
@@ -1,4 +1,5 @@
-using api.Interfaces;
+using api.Controllers;
+using api.Interfaces;
using api.Models;
using MongoDB.Driver;
@@ -7,11 +8,15 @@ namespace api.Services
public class DatasetService : IDatasetService
{
private readonly IMongoCollection<Dataset> _dataset;
+ private readonly IMongoCollection<Experiment> _experiment;
+ private readonly IExperimentService _experimentService;
- public DatasetService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient)
+ public DatasetService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient, IExperimentService experimentService)
{
var database = mongoClient.GetDatabase(settings.DatabaseName);
_dataset = database.GetCollection<Dataset>(settings.DatasetCollectionName);
+ _experiment = database.GetCollection<Experiment>(settings.ExperimentCollectionName);
+ _experimentService = experimentService;
}
public List<Dataset> SearchDatasets(string name)
@@ -29,7 +34,13 @@ namespace api.Services
//brisanje odredjenog name-a
public void Delete(string userId, string id)
{
- _dataset.DeleteOne(dataset => (dataset.uploaderId == userId && dataset._id == id));
+ List<Experiment> experiment = null;
+ _dataset.DeleteOne(dataset => (dataset.uploaderId == userId && dataset._id == id));
+
+ experiment = _experiment.Find(experiment => (experiment.datasetId == id && experiment.uploaderId == userId)).ToList();
+
+ foreach (Experiment experimentItem in experiment)
+ _experimentService.Delete(userId, experimentItem._id);
}
public List<Dataset> GetMyDatasets(string userId)
@@ -39,7 +50,7 @@ namespace api.Services
public List<Dataset> GetGuestDatasets()
{
//Join Igranonica public datasetove sa svim temp uploadanim datasetovima
- List<Dataset> datasets= _dataset.Find(dataset => dataset.uploaderId == "000000000000000000000000" && dataset.isPublic == true && dataset.isPreProcess).ToList();
+ List<Dataset> datasets = _dataset.Find(dataset => dataset.uploaderId == "000000000000000000000000" && dataset.isPublic == true && dataset.isPreProcess).ToList();
datasets.AddRange(_dataset.Find(dataset => dataset.uploaderId == "" && dataset.isPreProcess).ToList());
return datasets;
}
@@ -49,7 +60,7 @@ namespace api.Services
{
List<Dataset> list = _dataset.Find(dataset => dataset.uploaderId == userId && dataset.isPreProcess).ToList();
- if(ascdsc)
+ if (ascdsc)
list = list.OrderBy(dataset => dataset.lastUpdated).ToList();
else
list = list.OrderByDescending(dataset => dataset.lastUpdated).ToList();
@@ -62,7 +73,11 @@ namespace api.Services
return _dataset.Find(dataset => dataset.isPublic == true && dataset.isPreProcess).ToList();
}
- public Dataset GetOneDataset(string userId, string name)
+ public Dataset GetOneDataset(string userId, string id)
+ {
+ return _dataset.Find(dataset => dataset.uploaderId == userId && dataset._id == id && dataset.isPreProcess).FirstOrDefault();
+ }
+ public Dataset GetOneDatasetN(string userId, string name)
{
return _dataset.Find(dataset => dataset.uploaderId == userId && dataset.name == name && dataset.isPreProcess).FirstOrDefault();
}
@@ -74,13 +89,13 @@ namespace api.Services
}
//ako je potrebno da se zameni name ili ekstenzija
- public void Update(string userId, string id, Dataset dataset )
+ public void Update(string userId, string id, Dataset dataset)
{
_dataset.ReplaceOne(dataset => dataset.uploaderId == userId && dataset._id == id, dataset);
}
public void Update(Dataset dataset)
{
- _dataset.ReplaceOne(x=>x._id==dataset._id, dataset);
+ _dataset.ReplaceOne(x => x._id == dataset._id, dataset);
}
public string GetDatasetId(string fileId)
diff --git a/backend/api/api/Services/ExperimentService.cs b/backend/api/api/Services/ExperimentService.cs
index 539e4c08..2ad9d606 100644
--- a/backend/api/api/Services/ExperimentService.cs
+++ b/backend/api/api/Services/ExperimentService.cs
@@ -7,10 +7,13 @@ namespace api.Services
public class ExperimentService : IExperimentService
{
private readonly IMongoCollection<Experiment> _experiment;
+ private readonly IMongoCollection<Predictor> _predictor;
+
public ExperimentService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient)
{
var database = mongoClient.GetDatabase(settings.DatabaseName);
_experiment = database.GetCollection<Experiment>(settings.ExperimentCollectionName);
+ _predictor = database.GetCollection<Predictor>(settings.PredictorCollectionName);
}
public Experiment Create(Experiment experiment)
@@ -20,31 +23,37 @@ namespace api.Services
}
public Experiment Get(string id)
{
- return _experiment.Find(exp=>exp._id == id).FirstOrDefault();
+ return _experiment.Find(exp => exp._id == id).FirstOrDefault();
}
public Experiment Get(string uploaderId, string name)
{
- return _experiment.Find(exp => exp.uploaderId == uploaderId && exp.name == name ).FirstOrDefault();
+ return _experiment.Find(exp => exp.uploaderId == uploaderId && exp.name == name).FirstOrDefault();
}
public void Update(string id, Experiment experiment)
{
_experiment.ReplaceOne(experiment => experiment._id == id, experiment);
}
- public List<Experiment> GetMyExperiments(string id)
+ public List<Experiment> GetMyExperiments(string userId)
{
- return _experiment.Find(e=>e.uploaderId==id).ToList();
+ return _experiment.Find(experiment => experiment.uploaderId == userId).ToList();
}
- public Experiment GetOneExperiment(string userId, string name)
+ public Experiment GetOneExperiment(string userId, string id)
{
- return _experiment.Find(experiment => experiment.uploaderId == userId && experiment.name == name).FirstOrDefault();
+ return _experiment.Find(experiment => experiment.uploaderId == userId && experiment._id == id).FirstOrDefault();
}
public void Update(string userId, string id, Experiment experiment)
{
_experiment.ReplaceOne(experiment => experiment.uploaderId == userId && experiment._id == id, experiment);
}
+
+ public void Delete(string userId, string id)
+ {
+ _experiment.DeleteOne(experiment => (experiment.uploaderId == userId && experiment._id == id));
+ _predictor.DeleteMany(predictor => (predictor.uploaderId == userId && predictor.experimentId == id));
+ }
}
}
diff --git a/backend/api/api/Services/FillAnEmptyDb.cs b/backend/api/api/Services/FillAnEmptyDb.cs
index 99bbb91f..6148efb6 100644
--- a/backend/api/api/Services/FillAnEmptyDb.cs
+++ b/backend/api/api/Services/FillAnEmptyDb.cs
@@ -19,9 +19,9 @@ namespace api.Services
var database = mongoClient.GetDatabase(settings.DatabaseName);
_fileService = new FileService(settings, mongoClient);
- _datasetService = new DatasetService(settings, mongoClient);
- _modelService = new ModelService(settings, mongoClient);
_experimentService = new ExperimentService(settings, mongoClient);
+ _datasetService = new DatasetService(settings, mongoClient, _experimentService);
+ _modelService = new ModelService(settings, mongoClient);
_predictorService = new PredictorService(settings, mongoClient);
}
@@ -104,6 +104,8 @@ namespace api.Services
model.outputLayerActivationFunction = "sigmoid";
model.metrics = new string[] { };
model.epochs = 5;
+ model.isPublic = true;
+ model.accessibleByLink = true;
_modelService.Create(model);
@@ -215,6 +217,8 @@ namespace api.Services
model.outputLayerActivationFunction = "relu";
model.metrics = new string[] { };
model.epochs = 5;
+ model.isPublic = true;
+ model.accessibleByLink = true;
_modelService.Create(model);
@@ -321,6 +325,8 @@ namespace api.Services
model.outputLayerActivationFunction = "softmax";
model.metrics = new string[] { };
model.epochs = 1;
+ model.isPublic = true;
+ model.accessibleByLink = true;
_modelService.Create(model);
diff --git a/backend/api/api/Services/ModelService.cs b/backend/api/api/Services/ModelService.cs
index 12297635..e852d71f 100644
--- a/backend/api/api/Services/ModelService.cs
+++ b/backend/api/api/Services/ModelService.cs
@@ -5,14 +5,16 @@ using MongoDB.Driver;
namespace api.Services
{
- public class ModelService : IModelService
+ public class ModelService : IModelService
{
private readonly IMongoCollection<Model> _model;
+ private readonly IMongoCollection<Predictor> _predictor;
public ModelService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient)
{
var database = mongoClient.GetDatabase(settings.DatabaseName);
_model = database.GetCollection<Model>(settings.ModelCollectionName);
+ _predictor = database.GetCollection<Predictor>(settings.PredictorCollectionName);
}
public Model Create(Model model)
@@ -28,7 +30,11 @@ namespace api.Services
public void Delete(string userId, string name)
{
+ Model model = _model.Find(model => model.uploaderId == userId && model.name == name).FirstOrDefault();
+
_model.DeleteOne(model => (model.uploaderId == userId && model.name == name));
+ _predictor.DeleteMany(predictor => (predictor.uploaderId == userId && predictor.modelId == model._id));
+
}
public List<Model> GetMyModels(string userId)
@@ -48,12 +54,12 @@ namespace api.Services
return list;
}
- /*
+
public List<Model> GetPublicModels()
{
return _model.Find(model => model.isPublic == true).ToList();
}
- */
+
public Model GetOneModel(string userId, string name)
{
return _model.Find(model => model.uploaderId == userId && model.name == name).FirstOrDefault();
@@ -93,7 +99,7 @@ namespace api.Services
return false;
else
return true;
-
+
}
}
}
diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts
index 185e2257..526a8290 100644
--- a/frontend/src/app/_data/Model.ts
+++ b/frontend/src/app/_data/Model.ts
@@ -28,8 +28,10 @@ export default class Model extends FolderFile {
// Test set settings
public randomOrder: boolean = true,
public randomTestSet: boolean = true,
- public randomTestSetDistribution: number = 0.1 //0.1-0.9 (10% - 90%) JESTE OVDE ZAKUCANO 10, AL POSLATO JE KAO 0.1 BACK-U
+ public randomTestSetDistribution: number = 0.1, //0.1-0.9 (10% - 90%) JESTE OVDE ZAKUCANO 10, AL POSLATO JE KAO 0.1 BACK-U
+ public isPublic: boolean = false,
+ public accessibleByLink: boolean = false
) {
super(name, dateCreated, lastUpdated);
}
diff --git a/frontend/src/app/_elements/column-table/column-table.component.html b/frontend/src/app/_elements/column-table/column-table.component.html
index 543a0018..43895863 100644
--- a/frontend/src/app/_elements/column-table/column-table.component.html
+++ b/frontend/src/app/_elements/column-table/column-table.component.html
@@ -186,7 +186,7 @@
</mat-menu>
<mat-menu #replaceWith="matMenu">
- <input type="text" id={{colInfo.columnName}} mat-menu-item placeholder="Unesi vrednost..." [value]>
+ <input type="text" id={{colInfo.columnName}} mat-menu-item placeholder="Unesi vrednost..." [value] #enterAValue>
<button [disabled]="getValue(colInfo.columnName) == ''" mat-menu-item value={{getValue(colInfo.columnName)}} (click)="MissValsReplaceClicked($event, colInfo.columnName, i)">Potvrdi unos</button>
</mat-menu>
</div>
@@ -225,15 +225,24 @@
</div>
<div class="break-1"></div>
<div class="ns-col d-flex align-items-center justify-content-center">
- <button mat-button (click)="saveExperiment()" class="bottom-button text-offwhite rounded-bottom">
- <div class="f-row" style="justify-content: space-around;">
- <div>Potvrdi</div>
- <div class="icon-double pt-1">
- <mat-icon>check</mat-icon>
- <mat-icon>check</mat-icon>
+ <button *ngIf="experiment._id == ''" mat-button (click)="saveExperiment()" class="bottom-button text-offwhite rounded-bottom">
+ <div class="f-row" style="justify-content: space-around; width: 100%;">
+ <div>Sačuvaj</div>
+ <div class="icon-double pt-1">
+ <mat-icon>check</mat-icon>
+ <mat-icon>check</mat-icon>
+ </div>
</div>
- </div>
- </button>
+ </button>
+ <button *ngIf="experiment._id != ''" mat-button (click)="updateExperiment()" class="bottom-button text-offwhite rounded-bottom">
+ <div class="f-row" style="justify-content: space-around; width: 100%;">
+ <div>Sačuvaj izmene</div>
+ <div class="icon-double pt-1">
+ <mat-icon>check</mat-icon>
+ <mat-icon>check</mat-icon>
+ </div>
+ </div>
+ </button>
</div>
</div>
</div>
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 c3d4f206..7cac3b27 100644
--- a/frontend/src/app/_elements/column-table/column-table.component.ts
+++ b/frontend/src/app/_elements/column-table/column-table.component.ts
@@ -10,6 +10,8 @@ import { CsvParseService } from 'src/app/_services/csv-parse.service';
import { ProblemType } from 'src/app/_data/Model';
import { ExperimentsService } from 'src/app/_services/experiments.service';
import { SaveExperimentDialogComponent } from 'src/app/_modals/save-experiment-dialog/save-experiment-dialog.component';
+import { AlertDialogComponent } from 'src/app/_modals/alert-dialog/alert-dialog.component';
+import Shared from 'src/app/Shared';
@Component({
selector: 'app-column-table',
@@ -20,7 +22,6 @@ export class ColumnTableComponent implements AfterViewInit {
@Input() dataset?: Dataset;
@Input() experiment!: Experiment;
- @ViewChildren("nullValMenu") nullValMenus!: ElementRef[];
@Output() okPressed: EventEmitter<string> = new EventEmitter();
@Output() columnTableChanged = new EventEmitter();
@@ -49,10 +50,8 @@ export class ColumnTableComponent implements AfterViewInit {
this.columnsChecked.push(true);
});
- for (let i = 0; i < this.dataset?.columnInfo.length; i++) {
- this.experiment.inputColumns.push(this.dataset.columnInfo[i].columnName);
- }
- this.experiment.outputColumn = this.experiment.inputColumns[0];
+ this.resetInputColumns();
+ this.resetOutputColumn();
this.resetColumnEncodings(Encoding.Label);
this.setDeleteRowsForMissingValTreatment();
@@ -81,6 +80,18 @@ export class ColumnTableComponent implements AfterViewInit {
}
}
+ resetInputColumns() {
+ if (this.dataset != undefined) {
+ this.experiment.inputColumns = [];
+ for (let i = 0; i < this.dataset?.columnInfo.length; i++) {
+ this.experiment.inputColumns.push(this.dataset.columnInfo[i].columnName);
+ }
+ }
+ }
+ resetOutputColumn() {
+ this.experiment.outputColumn = this.experiment.inputColumns[0];
+ }
+
setDeleteRowsForMissingValTreatment() {
if (this.experiment != undefined) {
this.experiment.nullValues = NullValueOptions.DeleteRows;
@@ -212,13 +223,17 @@ export class ColumnTableComponent implements AfterViewInit {
this.experiment.name = selectedName;
//napravi odvojene dugmice za save i update -> za update nece da se otvara dijalog za ime
this.experimentService.addExperiment(this.experiment).subscribe((response) => {
- console.log(response);
+ this.experiment = response;
this.okPressed.emit();
});
});
}
-
-
+
+ openUpdateExperimentDialog() {
+ this.experimentService.updateExperiment(this.experiment).subscribe((response) => {
+ Shared.openDialog("Izmena eksperimenta", "Uspešno ste izmenili podatke o eksperimentu.");
+ });
+ }
MissValsDeleteClicked(event: Event, replacementType: NullValueOptions, index: number) {
if (this.experiment != undefined && this.dataset != undefined) {
@@ -272,6 +287,9 @@ export class ColumnTableComponent implements AfterViewInit {
saveExperiment() {
this.openSaveExperimentDialog();
}
+ updateExperiment() {
+ this.openUpdateExperimentDialog();
+ }
tabs = [
diff --git a/frontend/src/app/_modals/save-experiment-dialog/save-experiment-dialog.component.html b/frontend/src/app/_modals/save-experiment-dialog/save-experiment-dialog.component.html
index a0b5d771..bac73e0a 100644
--- a/frontend/src/app/_modals/save-experiment-dialog/save-experiment-dialog.component.html
+++ b/frontend/src/app/_modals/save-experiment-dialog/save-experiment-dialog.component.html
@@ -1,10 +1,11 @@
<h1 mat-dialog-title>Čuvanje eksperimenta</h1>
<div mat-dialog-content>
- <p>Unesite naziv eksperimenta:</p>
+ <span>Unesi naziv eksperimenta:</span>
<mat-form-field>
<input type="text" matInput [(ngModel)]="selectedName">
</mat-form-field>
- <p>Da li ste sigurni u izbor?</p>
+ <br><br>
+ <p>Sačuvaj eksperiment:</p>
</div>
<div mat-dialog-actions>
<button mat-button [mat-dialog-close]="selectedName" cdkFocusInitial>Da</button>
diff --git a/frontend/src/app/_pages/experiment/experiment.component.ts b/frontend/src/app/_pages/experiment/experiment.component.ts
index 28552664..3c8d8651 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.ts
+++ b/frontend/src/app/_pages/experiment/experiment.component.ts
@@ -120,7 +120,7 @@ export class ExperimentComponent implements AfterViewInit {
columnTableChangedEvent() {
//sta se desi kad se nesto promeni u column-table komponenti...
- console.log("promenio se column-table");
+ //console.log("promenio se column-table");
}
setDataset(dataset: FolderFile) {
diff --git a/frontend/src/app/_services/models.service.ts b/frontend/src/app/_services/models.service.ts
index d79e2781..fc888556 100644
--- a/frontend/src/app/_services/models.service.ts
+++ b/frontend/src/app/_services/models.service.ts
@@ -53,4 +53,9 @@ export class ModelsService {
deleteModel(model: Model) {
return this.http.delete(`${Configuration.settings.apiURL}/model/` + model.name, { headers: this.authService.authHeader(), responseType: "text" });
}
+
+ getPublicModels(): Observable<Model[]> {
+ return this.http.get<Model[]>(`${Configuration.settings.apiURL}/model/publicmodels`, { headers: this.authService.authHeader() });
+ }
+
}