From fcf12f5054cca7e38807531d6b4969e27b86b599 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sat, 16 Apr 2022 22:09:32 +0200 Subject: Ispravio overwrite guest Tokena na user Token --- frontend/src/app/_services/auth.service.ts | 2 ++ 1 file changed, 2 insertions(+) (limited to 'frontend/src/app/_services/auth.service.ts') diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts index 92cebe7f..ef340684 100644 --- a/frontend/src/app/_services/auth.service.ts +++ b/frontend/src/app/_services/auth.service.ts @@ -44,6 +44,7 @@ export class AuthService { enableAutoRefresh() { this.lastToken = this.cookie.get('token'); + clearTimeout(this.refresher); let exp = jwtHelper.getTokenExpirationDate(this.lastToken); if (!exp) { exp = new Date(); @@ -51,6 +52,7 @@ export class AuthService { var property = jwtHelper.decodeToken(this.cookie.get('token')); var username = property['name']; if (username != "") { + this.refresher = setTimeout(() => { this.http.post(`${Configuration.settings.apiURL}/auth/renewJwt`, {}, { headers: this.authHeader(), responseType: 'text' }).subscribe((response) => { this.authenticate(response); -- cgit v1.2.3 From 32d776709f2b5df14dbcfd3f610306a899959851 Mon Sep 17 00:00:00 2001 From: Danijel Anđelković Date: Tue, 19 Apr 2022 21:44:08 +0200 Subject: Dodao event kada se korisnik uloguje tako da komponente koje treba da osveze vrednost mogu da osveze svoje vrednosti tako sto se prijave na taj event. --- .../dataset-load/dataset-load.component.ts | 11 ++++++- .../_elements/model-load/model-load.component.ts | 27 ++++++++++------- .../src/app/_elements/navbar/navbar.component.html | 34 ++++++++------------- frontend/src/app/_services/auth.service.ts | 7 +++-- frontend/src/app/training/training.component.ts | 35 +++++++++++++++++----- 5 files changed, 72 insertions(+), 42 deletions(-) (limited to 'frontend/src/app/_services/auth.service.ts') 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 73dbf2d2..74640782 100644 --- a/frontend/src/app/_elements/dataset-load/dataset-load.component.ts +++ b/frontend/src/app/_elements/dataset-load/dataset-load.component.ts @@ -8,6 +8,7 @@ import { DatasetsService } from 'src/app/_services/datasets.service'; import { CsvParseService } from 'src/app/_services/csv-parse.service'; import { Output, EventEmitter } from '@angular/core'; import { SignalRService } from 'src/app/_services/signal-r.service'; +import { AuthService } from 'src/app/_services/auth.service'; @Component({ selector: 'app-dataset-load', @@ -33,7 +34,15 @@ export class DatasetLoadComponent implements OnInit { term: string = ""; - constructor(private models: ModelsService, private datasets: DatasetsService, private csv: CsvParseService, private signalRService: SignalRService) { + constructor(private models: ModelsService, private datasets: DatasetsService, private csv: CsvParseService, private signalRService: SignalRService, private authService: AuthService) { + this.fetchDatasets(); + + authService.loggedInEvent.subscribe(_ => { + this.fetchDatasets(); + }) + } + + fetchDatasets() { this.datasets.getMyDatasets().subscribe((datasets) => { this.myDatasets = datasets; }); diff --git a/frontend/src/app/_elements/model-load/model-load.component.ts b/frontend/src/app/_elements/model-load/model-load.component.ts index 5f9caf9d..8bf8fd93 100644 --- a/frontend/src/app/_elements/model-load/model-load.component.ts +++ b/frontend/src/app/_elements/model-load/model-load.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild, Output, EventEmitter, Input } from '@angu import Shared from 'src/app/Shared'; import Experiment from 'src/app/_data/Experiment'; import Model, { ActivationFunction, LossFunction, LossFunctionBinaryClassification, LossFunctionMultiClassification, LossFunctionRegression, Metrics, MetricsBinaryClassification, MetricsMultiClassification, MetricsRegression, NullValueOptions, Optimizer, ProblemType } from 'src/app/_data/Model'; +import { AuthService } from 'src/app/_services/auth.service'; import { ModelsService } from 'src/app/_services/models.service'; import { GraphComponent } from '../graph/graph.component'; @@ -14,7 +15,7 @@ import { GraphComponent } from '../graph/graph.component'; export class ModelLoadComponent implements OnInit { @ViewChild(GraphComponent) graph!: GraphComponent; - @Input() forExperiment?:Experiment; + @Input() forExperiment?: Experiment; @Output() selectedModelChangeEvent = new EventEmitter(); newModel: Model = new Model(); @@ -38,13 +39,20 @@ export class ModelLoadComponent implements OnInit { batchSizePower: number = 2; - constructor(private modelsService: ModelsService) { + constructor(private modelsService: ModelsService, private authService: AuthService) { //console.log("forExperiment = ", this.forExperiment); - + this.fetchModels(); + + this.authService.loggedInEvent.subscribe(_ => { + this.fetchModels(); + }) + } + + fetchModels() { //if (this.forExperiment == undefined) { - this.modelsService.getMyModels().subscribe((models) => { - this.myModels = models; - }); + this.modelsService.getMyModels().subscribe((models) => { + this.myModels = models; + }); /*} else { this.modelsService.getMyModelsByType(ProblemType.Regression).subscribe((models) => { @@ -56,10 +64,9 @@ export class ModelLoadComponent implements OnInit { ngOnInit(): void { } - - updateBatchSize() - { - this.newModel.batchSize=2**this.batchSizePower; + + updateBatchSize() { + this.newModel.batchSize = 2 ** this.batchSizePower; } updateGraph() { diff --git a/frontend/src/app/_elements/navbar/navbar.component.html b/frontend/src/app/_elements/navbar/navbar.component.html index 7d0c4cd8..1988b834 100644 --- a/frontend/src/app/_elements/navbar/navbar.component.html +++ b/frontend/src/app/_elements/navbar/navbar.component.html @@ -6,31 +6,25 @@ diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts index ef340684..9e3f9f2f 100644 --- a/frontend/src/app/_services/auth.service.ts +++ b/frontend/src/app/_services/auth.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { EventEmitter, Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { JwtHelperService } from '@auth0/angular-jwt'; import { CookieService } from 'ngx-cookie-service'; @@ -12,6 +12,8 @@ const jwtHelper = new JwtHelperService(); }) export class AuthService { + public loggedInEvent: EventEmitter = new EventEmitter(); + shared = shared; constructor(private http: HttpClient, private cookie: CookieService) { } @@ -52,7 +54,7 @@ export class AuthService { var property = jwtHelper.decodeToken(this.cookie.get('token')); var username = property['name']; if (username != "") { - + this.refresher = setTimeout(() => { this.http.post(`${Configuration.settings.apiURL}/auth/renewJwt`, {}, { headers: this.authHeader(), responseType: 'text' }).subscribe((response) => { this.authenticate(response); @@ -81,6 +83,7 @@ export class AuthService { } this.cookie.set('token', token, exp); this.updateUser(); + this.loggedInEvent.emit(true); } updateUser() { diff --git a/frontend/src/app/training/training.component.ts b/frontend/src/app/training/training.component.ts index c82a6b79..1b85b947 100644 --- a/frontend/src/app/training/training.component.ts +++ b/frontend/src/app/training/training.component.ts @@ -4,15 +4,17 @@ import Shared from '../Shared'; import Experiment from '../_data/Experiment'; import Model, { ProblemType } from '../_data/Model'; import { ModelLoadComponent } from '../_elements/model-load/model-load.component'; +import { AuthService } from '../_services/auth.service'; import { ExperimentsService } from '../_services/experiments.service'; import { ModelsService } from '../_services/models.service'; +import { SignalRService } from '../_services/signal-r.service'; @Component({ selector: 'app-training', templateUrl: './training.component.html', styleUrls: ['./training.component.css'] }) -export class TrainingComponent implements OnInit{ +export class TrainingComponent implements OnInit { @ViewChild(ModelLoadComponent) modelLoadComponent?: ModelLoadComponent; @@ -24,22 +26,39 @@ export class TrainingComponent implements OnInit{ term: string = ""; - constructor(private modelsService: ModelsService, private route: ActivatedRoute, private experimentsService: ExperimentsService) { + constructor(private modelsService: ModelsService, private route: ActivatedRoute, private experimentsService: ExperimentsService, private authService: AuthService, private signalRService: SignalRService) { + if (this.signalRService.hubConnection) { + this.signalRService.hubConnection.on("NotifyEpoch", (mName: string, mId: string, stat: string, totalEpochs: number, currentEpoch: number) => { + if (this.selectedModel?._id == mId) { + this.trainingResult = stat; + } + }); + } } - ngOnInit(): void { + ngOnInit(): void { this.route.queryParams.subscribe(params => { - let experimentId =this.route.snapshot.paramMap.get("id"); + let experimentId = this.route.snapshot.paramMap.get("id"); - this.experimentsService.getMyExperiments().subscribe((experiments) => { - this.myExperiments = experiments; + this.fetchExperiments(experimentId); - this.selectedExperiment = this.myExperiments.filter(x => x._id == experimentId)[0]; - console.log("selektovan exp u training comp: ", this.selectedExperiment); + this.authService.loggedInEvent.subscribe(_ => { + this.fetchExperiments(experimentId); + + this.signalRService.startConnection() }); }); } + fetchExperiments(andSelectWithId: string | null = '') { + this.experimentsService.getMyExperiments().subscribe((experiments) => { + this.myExperiments = experiments; + + this.selectedExperiment = this.myExperiments.filter(x => x._id == andSelectWithId)[0]; + console.log("selektovan exp u training comp: ", this.selectedExperiment); + }); + } + selectThisExperiment(experiment: Experiment) { this.selectedExperiment = experiment; this.modelLoadComponent!.newModel.type = this.selectedExperiment.type; -- cgit v1.2.3