From 361c0d691801a0f433ee1a9cb08a6043f4ab2ad0 Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Mon, 9 May 2022 20:33:58 +0200 Subject: Cuvanje eksperimenta: sredjen modal i premesteno cuvanje u modal komponentu. Reseni specijalni slucajevi. ML: u controlleru zakomentarisan import da bi prosao kompajl. --- backend/microservice/api/newmlservice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 560e575f..c55c3907 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -24,7 +24,7 @@ from dataclasses import dataclass import statistics as s from sklearn.metrics import roc_auc_score import matplotlib.pyplot as plt -from ann_visualizer.visualize import ann_viz; +#from ann_visualizer.visualize import ann_viz; def returnColumnsInfo(dataset): dict=[] -- cgit v1.2.3 From c7e4202d2279897f1601dbd70a2485280e17e3f6 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 9 May 2022 21:02:40 +0200 Subject: Omoguceno da korisnik moze da ima vise sesija koje poseduju konekciju sa webSocket-om. Time moze da dobija notifikacije iz bilo koje sesije. Omogucen prikaz treniranja ukoliko zeli da trenira vise modela odjednom. --- backend/api/api/Controllers/ModelController.cs | 3 +- backend/api/api/Controllers/PredictorController.cs | 3 +- backend/api/api/Services/ChatHub.cs | 39 ++++++++++------------ backend/api/api/Services/MlConnectionService.cs | 5 +-- 4 files changed, 25 insertions(+), 25 deletions(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index a0e51e1f..3145a080 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -86,7 +86,8 @@ namespace api.Controllers var user = _userService.GetUserById(model.uploaderId); if (ChatHub.CheckUser(user._id)) - await _ichat.Clients.Client(ChatHub.Users[user._id]).SendAsync("NotifyEpoch",model.name,info.ModelId,info.Stat,model.epochs,info.EpochNum); + foreach (var connection in ChatHub.getAllConnectionsOfUser(user._id)) + await _ichat.Clients.Client(connection).SendAsync("NotifyEpoch",model.name,info.ModelId,info.Stat,model.epochs,info.EpochNum); return Ok(); } diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 3646187e..3a9e6649 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -162,7 +162,8 @@ namespace api.Controllers return BadRequest("Model not found or user doesnt exist"); _predictorService.Create(predictor); if (ChatHub.CheckUser(user._id)) - await _ichat.Clients.Client(ChatHub.Users[user._id]).SendAsync("NotifyPredictor", predictor._id,model.name); + foreach(var connection in ChatHub.getAllConnectionsOfUser(user._id)) + await _ichat.Clients.Client(connection).SendAsync("NotifyPredictor", predictor._id,model.name); return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor); } diff --git a/backend/api/api/Services/ChatHub.cs b/backend/api/api/Services/ChatHub.cs index 47a1f099..790b4de6 100644 --- a/backend/api/api/Services/ChatHub.cs +++ b/backend/api/api/Services/ChatHub.cs @@ -23,10 +23,7 @@ namespace api.Services if (token == null) return; string id=_tokenService.TokenToId(token); - if (!Users.ContainsKey(id)) - Users.Add(id, Context.ConnectionId); - else - Users[id] = Context.ConnectionId; + Users.Add(Context.ConnectionId,id); //await SendDirect(id, "poruka"); //await Send(Context.ConnectionId); await base.OnConnectedAsync(); @@ -34,27 +31,27 @@ namespace api.Services } public override async Task OnDisconnectedAsync(Exception? exception) { - var user = Users.Values.Contains(Context.ConnectionId); - if (user==false) - return; - Users.Remove(Users.FirstOrDefault(u => u.Value == Context.ConnectionId).Key); + Users.Remove(Context.ConnectionId); } - public async Task SendDirect(string id,string message) - { - if (Users[id]==null) - return; - - await Clients.Client(Users[id]).SendAsync("Notify",message); - } - public async Task Send(string message) + public static bool CheckUser(string id) { - await Clients.All.SendAsync("Notify",message); + var users=Users.Values; + foreach (var user in users) + { + if(user==id) + return true; + } + return false; } - public static bool CheckUser(string id) + public static List getAllConnectionsOfUser(string id) { - if (Users[id] == null) - return false; - return true; + List keys=new List(); + foreach (var user in Users) + { + if(user.Value==id) + keys.Add(user.Key); + } + return keys; } } diff --git a/backend/api/api/Services/MlConnectionService.cs b/backend/api/api/Services/MlConnectionService.cs index 17c0f8b8..b6d422ad 100644 --- a/backend/api/api/Services/MlConnectionService.cs +++ b/backend/api/api/Services/MlConnectionService.cs @@ -59,8 +59,9 @@ namespace api.Services Dataset newDataset = JsonConvert.DeserializeObject(result.Content); newDataset.isPreProcess = true; _datasetService.Update(newDataset); - if(ChatHub.CheckUser(id)) - await _ichat.Clients.Client(ChatHub.Users[id]).SendAsync("NotifyDataset",newDataset.name,newDataset._id); + if (ChatHub.CheckUser(id)) + foreach (var connection in ChatHub.getAllConnectionsOfUser(id)) + await _ichat.Clients.Client(connection).SendAsync("NotifyDataset",newDataset.name,newDataset._id); return; } -- cgit v1.2.3