aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/api/api/Controllers/ModelController.cs12
-rw-r--r--backend/api/api/Controllers/PredictorController.cs3
-rw-r--r--backend/api/api/Services/IModelService.cs1
-rw-r--r--backend/api/api/Services/ModelService.cs5
-rw-r--r--frontend/src/app/_elements/item-predictor/item-predictor.component.html4
-rw-r--r--frontend/src/app/_elements/item-predictor/item-predictor.component.ts4
-rw-r--r--frontend/src/app/_pages/predict/predict.component.html61
-rw-r--r--frontend/src/app/_pages/predict/predict.component.ts6
8 files changed, 88 insertions, 8 deletions
diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs
index 0be7894e..d8bc1515 100644
--- a/backend/api/api/Controllers/ModelController.cs
+++ b/backend/api/api/Controllers/ModelController.cs
@@ -129,8 +129,9 @@ namespace api.Controllers
// POST api/<ModelController>/add
[HttpPost("add")]
[Authorize(Roles = "User,Guest")]
- public ActionResult<Model> Post([FromBody] Model model)
+ public ActionResult<Model> Post([FromBody] Model model)//, bool overwrite)
{
+ bool overwrite = false;
//username="" ako je GUEST
model.inputNeurons = model.inputColumns.Length;
if (_modelService.CheckHyperparameters(model.inputNeurons, model.hiddenLayerNeurons, model.hiddenLayers, model.outputNeurons) == false)
@@ -138,11 +139,16 @@ namespace api.Controllers
var existingModel = _modelService.GetOneModel(model.username, model.name);
- if (existingModel != null)
+ if (existingModel != null && !overwrite)
return NotFound($"Model with name = {model.name} exisits");
else
{
- _modelService.Create(model);
+ if (existingModel == null)
+ _modelService.Create(model);
+ else
+ {
+ _modelService.Replace(model);
+ }
return CreatedAtAction(nameof(Get), new { id = model._id }, model);
}
diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs
index 8f2167c4..98e2695e 100644
--- a/backend/api/api/Controllers/PredictorController.cs
+++ b/backend/api/api/Controllers/PredictorController.cs
@@ -74,8 +74,7 @@ namespace api.Controllers
return _predictorService.SearchPredictors(name, username);
}
- //SEARCH za predictore (public ili private sa ovim imenom )
- // GET api/<PredictorController>/search/{name}
+ // GET api/<PredictorController>/{name}
[HttpGet("{id}")]
[Authorize(Roles = "User")]
public ActionResult<Predictor> GetPredictor(string id)
diff --git a/backend/api/api/Services/IModelService.cs b/backend/api/api/Services/IModelService.cs
index 637d09a3..3e70a1c3 100644
--- a/backend/api/api/Services/IModelService.cs
+++ b/backend/api/api/Services/IModelService.cs
@@ -11,6 +11,7 @@ namespace api.Services
List<Model> GetLatestModels(string username);
//List<Model> GetPublicModels();
Model Create(Model model);
+ Model Replace(Model model);
void Update(string username, string name, Model model);
void Delete(string username, string name);
bool CheckHyperparameters(int inputNeurons, int hiddenLayerNeurons, int hiddenLayers, int outputNeurons);
diff --git a/backend/api/api/Services/ModelService.cs b/backend/api/api/Services/ModelService.cs
index eae8c78b..c2b4e692 100644
--- a/backend/api/api/Services/ModelService.cs
+++ b/backend/api/api/Services/ModelService.cs
@@ -20,6 +20,11 @@ namespace api.Services
_model.InsertOne(model);
return model;
}
+ public Model Replace(Model model)
+ {
+ _model.ReplaceOne(m => m._id == model._id, model);
+ return model;
+ }
public void Delete(string username, string name)
{
diff --git a/frontend/src/app/_elements/item-predictor/item-predictor.component.html b/frontend/src/app/_elements/item-predictor/item-predictor.component.html
index b4690154..7ae26fd3 100644
--- a/frontend/src/app/_elements/item-predictor/item-predictor.component.html
+++ b/frontend/src/app/_elements/item-predictor/item-predictor.component.html
@@ -19,6 +19,8 @@
</div>
</div>
<div class="card-footer text-center">
- <a routerLink="/predict" mat-raised-button color="primary">Iskoristi</a>
+ <button class="btn btn-lg col-4" style="background-color:#003459; color:white;"
+ (click)="openPredictor();">Iskoristi</button>
+ <!--<a routerLink="/predict" mat-raised-button color="primary">Iskoristi</a>-->
</div>
</div> \ No newline at end of file
diff --git a/frontend/src/app/_elements/item-predictor/item-predictor.component.ts b/frontend/src/app/_elements/item-predictor/item-predictor.component.ts
index cc782f45..d864480a 100644
--- a/frontend/src/app/_elements/item-predictor/item-predictor.component.ts
+++ b/frontend/src/app/_elements/item-predictor/item-predictor.component.ts
@@ -15,4 +15,8 @@ export class ItemPredictorComponent implements OnInit {
ngOnInit(): void {
}
+ openPredictor() {
+ console.log("iskoristi")
+ }
+
}
diff --git a/frontend/src/app/_pages/predict/predict.component.html b/frontend/src/app/_pages/predict/predict.component.html
index 74a83b71..67d047b7 100644
--- a/frontend/src/app/_pages/predict/predict.component.html
+++ b/frontend/src/app/_pages/predict/predict.component.html
@@ -1 +1,60 @@
-<p>predict works!</p>
+
+<div id="wrapper">
+ <br>
+ <div id="container" class="container p-5" style="background-color: white; min-height: 100%;">
+
+ <div id="header">
+ <h1>Iskoristite prediktor</h1>
+ </div>
+
+ <br>
+
+ <div class="form-group row mt-3 mb-2 d-flex justify-content-center">
+ <!--justify-content-center-->
+ <h2> Izabrani prediktor: </h2>
+ <div class="col-3">
+ <label for="name" class="col-form-label">Naziv prediktora:</label>
+ <input type="text" class="form-control" name="name" [(ngModel)]="predictor.name">
+ </div>
+ <div class="col-5">
+ <label for="desc" class="col-sm-2 col-form-label">Opis:</label>
+ <div>
+ <textarea class="form-control" name="desc" rows="3" [(ngModel)]="predictor.description"></textarea>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="col-3 mt-2">
+ <label for="type" class="form-check-label">Da li je prediktor javan?</label>
+ <input class="mx-3 form-check-input" type="checkbox" [(ngModel)]="predictor.isPublic"
+ type="checkbox" value="" >
+ </div>
+ <div class="col-3 mt-2">
+ <label for="type" class="form-check-label">Da li je dostupan za deljenje?</label>
+ <input class="mx-3 form-check-input" type="checkbox" [(ngModel)]="predictor.accessibleByLink"
+ type="checkbox" value="" >
+ </div>
+ <div class="col-2">
+ <label for="dateCreated" class="col-form-label">Datum:</label> &nbsp;&nbsp;
+ <input type="text" class="form-control-plaintext" id="dateCreated" placeholder="--/--/--"
+ value="{{predictor.dateCreated | date: 'dd/MM/yyyy'}}" readonly>
+ </div>
+
+ <!--
+ <br><br>
+ <div class="form-group row mt-5 mb-3">
+ <div class="col"></div>
+ <button class="btn btn-lg col-4" style="background-color:#003459; color:white;"
+ (click)="addModel();">Sačuvaj model</button>
+ <div class="col"></div>
+ <button class="btn btn-lg col-4" style="background-color:#003459; color:white;"
+ (click)="trainModel();">Treniraj model</button>
+ <div class="col"></div>
+ </div>
+
+ -->
+
+ </div>
+</div> \ No newline at end of file
diff --git a/frontend/src/app/_pages/predict/predict.component.ts b/frontend/src/app/_pages/predict/predict.component.ts
index 0e313c65..d5cb22bd 100644
--- a/frontend/src/app/_pages/predict/predict.component.ts
+++ b/frontend/src/app/_pages/predict/predict.component.ts
@@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core';
+import Predictor from 'src/app/_data/Predictor';
@Component({
selector: 'app-predict',
@@ -7,7 +8,10 @@ import { Component, OnInit } from '@angular/core';
})
export class PredictComponent implements OnInit {
- constructor() { }
+ predictor:Predictor;
+ constructor() {
+ this.predictor = new Predictor();
+ }
ngOnInit(): void {
}