From 317071919945434f1186ce908f0295ec180c178e Mon Sep 17 00:00:00 2001 From: "DESKTOP-S0O2C44\\ROG" Date: Wed, 30 Mar 2022 23:55:24 +0200 Subject: Odradjena predict stranica i poslati inputi na back (post - usePredictor) #53 #66 --- backend/api/api/Controllers/PredictorController.cs | 30 ++++++++++- backend/api/api/Models/Model.cs | 2 + backend/api/api/Models/NullValues.cs | 9 ++++ backend/api/api/Models/Predictor.cs | 16 ++++++ .../item-predictor/item-predictor.component.ts | 6 ++- .../src/app/_pages/predict/predict.component.html | 58 +++++++++++++++------- .../src/app/_pages/predict/predict.component.ts | 20 +++++++- frontend/src/app/_services/predictors.service.ts | 6 +++ frontend/src/app/app-routing.module.ts | 2 +- 9 files changed, 124 insertions(+), 25 deletions(-) create mode 100644 backend/api/api/Models/NullValues.cs diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 98e2695e..cdc14632 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Net.Http.Headers; using System.Net.Http.Headers; +using System.Diagnostics; namespace api.Controllers { @@ -74,8 +75,8 @@ namespace api.Controllers return _predictorService.SearchPredictors(name, username); } - // GET api//{name} - [HttpGet("{id}")] + // GET api//getpredictor/{name} + [HttpGet("getpredictor/{id}")] [Authorize(Roles = "User")] public ActionResult GetPredictor(string id) { @@ -185,6 +186,31 @@ namespace api.Controllers } } + // POST api//usepredictor {predictor,inputs} + [HttpPost("usepredictor/{id}")] + [Authorize(Roles = "User")] + public ActionResult UsePredictor(String id, [FromBody] String[] inputs) + { + + string username; + var header = Request.Headers[HeaderNames.Authorization]; + if (AuthenticationHeaderValue.TryParse(header, out var headerValue)) + { + var scheme = headerValue.Scheme; + var parameter = headerValue.Parameter; + username = jwtToken.TokenToUsername(parameter); + if (username == null) + return null; + } + else + return BadRequest(); + + Predictor predictor = _predictorService.GetPredictor(username, id); + + foreach(String i in inputs) + Debug.WriteLine(i); + return NoContent(); + } // PUT api//{name} diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs index 2baab1c0..26f732ee 100644 --- a/backend/api/api/Models/Model.cs +++ b/backend/api/api/Models/Model.cs @@ -46,5 +46,7 @@ namespace api.Models public string nullValues { get; set; } public string[] nullValuesReplacers { get; set; } + + //public NullValues[] nullValues { get; set; } } } diff --git a/backend/api/api/Models/NullValues.cs b/backend/api/api/Models/NullValues.cs new file mode 100644 index 00000000..a8ce4f36 --- /dev/null +++ b/backend/api/api/Models/NullValues.cs @@ -0,0 +1,9 @@ +namespace api.Models +{ + public class NullValues + { + public string column { get; set; } + public string option { get; set; } + public string value { get; set; } + } +} diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index 568719fc..9c8d362f 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -20,3 +20,19 @@ namespace api.Models } } +/* +{ + "_id" : "6244950f26cf2385bc29ba28", + "username" : "ivan123", + "name" : "Neki prediktor", + "description" : "Neki opis prediktora koji je unet tamo", + "inputs": ["proba", + "proba2", + "proba3" + ], + "output" : "", + "isPublic" : true, + "accessibleByLink" : false, + "dateCreated" : "232" +} +*/ \ 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 d864480a..b6b5c9db 100644 --- a/frontend/src/app/_elements/item-predictor/item-predictor.component.ts +++ b/frontend/src/app/_elements/item-predictor/item-predictor.component.ts @@ -1,4 +1,5 @@ import { Component, Input, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; import Predictor from 'src/app/_data/Predictor'; @Component({ @@ -10,13 +11,14 @@ export class ItemPredictorComponent implements OnInit { @Input() predictor: Predictor = new Predictor(); - constructor() { } + constructor(private router: Router) { } ngOnInit(): void { } openPredictor() { - console.log("iskoristi") + this.router.navigate(['predict/'+ '6244958a26cf2385bc29ba2c']); + //this.router.navigate(['predict'+this.predictor._id]); } } diff --git a/frontend/src/app/_pages/predict/predict.component.html b/frontend/src/app/_pages/predict/predict.component.html index 67d047b7..fe17c96d 100644 --- a/frontend/src/app/_pages/predict/predict.component.html +++ b/frontend/src/app/_pages/predict/predict.component.html @@ -9,52 +9,72 @@
-
+

Izabrani prediktor:

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

Popunite ulazne kolone:

+
+
+
+ + + +
+ +
+
+ + -
+
+
+ +
+
+
+
+
+
+ +
-
+
+
-    +
- +
\ 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 d5cb22bd..3f431fff 100644 --- a/frontend/src/app/_pages/predict/predict.component.ts +++ b/frontend/src/app/_pages/predict/predict.component.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; import Predictor from 'src/app/_data/Predictor'; +import { PredictorsService } from 'src/app/_services/predictors.service'; @Component({ selector: 'app-predict', @@ -8,12 +10,28 @@ import Predictor from 'src/app/_data/Predictor'; }) export class PredictComponent implements OnInit { + inputs : String[] = []; + predictor:Predictor; - constructor() { + constructor(private predictS : PredictorsService, private route: ActivatedRoute) { this.predictor = new Predictor(); } ngOnInit(): void { + this.route.params.subscribe(url => { + this.predictS.getPredictor(url["id"]).subscribe(p => { + + this.predictor = p; + console.log(this.predictor); + }) + }); } + usePredictor(): void{ + this.predictS.usePredictor(this.predictor, this.inputs).subscribe(p => { + + alert("Uspesno ste poslali preditor!"); + }) + console.log(this.inputs); + } } diff --git a/frontend/src/app/_services/predictors.service.ts b/frontend/src/app/_services/predictors.service.ts index a2dc012f..54ae5694 100644 --- a/frontend/src/app/_services/predictors.service.ts +++ b/frontend/src/app/_services/predictors.service.ts @@ -17,5 +17,11 @@ export class PredictorsService { getPublicPredictors(): Observable { return this.http.get(`${API_SETTINGS.apiURL}/predictor/publicpredictors`, { headers: this.authService.authHeader() }); } + getPredictor(id : String): Observable { + return this.http.get(`${API_SETTINGS.apiURL}/predictor/getpredictor/`+ id, { headers: this.authService.authHeader() }); + } + usePredictor(predictor: Predictor, inputs : String[]) { + return this.http.post(`${API_SETTINGS.apiURL}/predictor/usepredictor/` + predictor._id, inputs, { headers: this.authService.authHeader() }); + } } diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index 1c368318..fd827ac9 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -24,7 +24,7 @@ const routes: Routes = [ { path: 'profile', component: ProfileComponent, canActivate: [AuthGuardService], data: { title: 'Profil' } }, { path: 'browse-datasets', component: FilterDatasetsComponent, data: { title: 'Javni izvori podataka' } }, { path: 'browse-predictors', component: BrowsePredictorsComponent, data: { title: 'Javni trenirani modeli' } }, - { path: 'predict', component: PredictComponent, data: { title: 'Predvidi vrednosti' } } + { path: 'predict/:id', component: PredictComponent, data: { title: 'Predvidi vrednosti' } } ]; @NgModule({ -- cgit v1.2.3