aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/app/training
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/app/training')
-rw-r--r--frontend/src/app/training/training.component.css39
-rw-r--r--frontend/src/app/training/training.component.html63
-rw-r--r--frontend/src/app/training/training.component.spec.ts25
-rw-r--r--frontend/src/app/training/training.component.ts105
4 files changed, 34 insertions, 198 deletions
diff --git a/frontend/src/app/training/training.component.css b/frontend/src/app/training/training.component.css
deleted file mode 100644
index 490c56b5..00000000
--- a/frontend/src/app/training/training.component.css
+++ /dev/null
@@ -1,39 +0,0 @@
-#header {
- background-color: #003459;
- padding-top: 30px;
- padding-bottom: 20px;
-}
-
-#header h1 {
- font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
- text-align: center;
- color: white;
-}
-
-#container {
- border-radius: 8px;
-}
-
-#wrapper {
- color: #003459;
-}
-
-.btnType1 {
- background-color: #003459;
- color: white;
-}
-
-.btnType2 {
- background-color: white;
- color: #003459;
- border-color: #003459;
-}
-
-.selectedExperimentClass {
- /*border-color: 2px solid #003459;*/
- background-color: lightblue;
-}
-
-ul li:hover {
- background-color: lightblue;
-} \ No newline at end of file
diff --git a/frontend/src/app/training/training.component.html b/frontend/src/app/training/training.component.html
index deac88cc..672e75fb 100644
--- a/frontend/src/app/training/training.component.html
+++ b/frontend/src/app/training/training.component.html
@@ -2,40 +2,45 @@
<h1>Trenirajte veštačku neuronsku mrežu</h1>
</div>
<div id="wrapper" class="mb-4">
- <div id="container" class="container p-5" style="background-color: white; min-height: 100%;">
- <h2>1. Izaberite eksperiment iz kolekcije</h2>
- <div class="px-5 mt-5 mb-3">
- <input type="text" class="form-control" placeholder="Pretraga" [(ngModel)]="term">
- </div>
- <div class="overflow-auto px-5" style="max-height: 500px;">
- <ul class="list-group">
- <li class="list-group-item p-3" *ngFor="let experiment of myExperiments|filter:term" [ngClass]="{'selectedExperimentClass': this.selectedExperiment == experiment}">
- <app-item-experiment [experiment]="experiment" (click)="selectThisExperiment(experiment);"></app-item-experiment>
- </li>
- </ul>
- </div>
+ <div id="container" class="container p-5 row" style="background-color: white; min-height: 100%;">
+ <div class="col"></div>
- <h2 class="mt-5 mb-2">2. Izaberite model</h2>
- <app-model-load *ngIf="selectedExperiment" (selectedModelChangeEvent)="selectModel($event)" [forExperiment]="selectedExperiment"></app-model-load>
- <h3 *ngIf="!selectedExperiment">Morate prvo izabrati eksperiment.</h3>
+ <div class="col-10">
- <h2 class="my-5">3. Treniranje modela</h2>
+ <h2>1. Izaberite eksperiment iz kolekcije</h2>
+ <div class="px-5 mt-5 mb-3">
+ <input type="text" class="form-control" placeholder="Pretraga"
+ [(ngModel)]="term">
+ </div>
+ <div class="overflow-auto px-5" style="max-height: 500px;">
+ <ul class="list-group">
+ <li class="list-group-item p-3" *ngFor="let experiment of myExperiments|filter:term"
+ [ngClass]="{'selectedExperimentClass': this.selectedExperiment == experiment}">
+ <app-item-experiment [experiment]="experiment"
+ (click)="selectThisExperiment(experiment);"></app-item-experiment>
+ </li>
+ </ul>
+ </div>
+
+ <h2 class="mt-5 mb-2">2. Izaberite model</h2>
+ <app-model-load (selectedModelChangeEvent)="selectModel($event)" [forExperiment]="selectedExperiment"></app-model-load>
+
+ <h2 class="my-5">3. Treniranje modela</h2>
- <div class="d-flex flex-row justify-content-center align-items-center my-3">
- <button #trainButton class="btn btn-lg col-4" style="background-color:#003459; color:white;" (click)="trainModel();">Treniraj
+ <div class="d-flex flex-row justify-content-center align-items-center my-3">
+ <button class="btn btn-lg col-4" style="background-color:#003459; color:white;" (click)="trainModel();">Treniraj
model</button>
+ </div>
+
+ <h2 class="mt-5">Rezultati treniranja</h2>
+ <div class="m-3" *ngIf="trainingResult">
+ <h2 class="my-2">Rezultati treniranja:</h2>
+ <p>
+ {{trainingResult}}
+ </p>
+ </div>
</div>
- <h2 class="mt-5">Rezultati treniranja</h2>
- <div class="m-3" *ngIf="trainingResult">
- <h2 class="my-2">Rezultati treniranja:</h2>
- <app-metric-view *ngIf="trainingResult" [metrics]="trainingResult"></app-metric-view>
- </div>
- </div>
-
- <h2 class="mt-5">Rezultati treniranja</h2>
- <div class="m-3" *ngIf="trainingResult">
- <h2 class="my-2">Rezultati treniranja:</h2>
- <app-metric-view *ngIf="trainingResult" [metrics]="trainingResult"></app-metric-view>
+ <div class="col"></div>
</div>
</div> \ No newline at end of file
diff --git a/frontend/src/app/training/training.component.spec.ts b/frontend/src/app/training/training.component.spec.ts
deleted file mode 100644
index 1222cb40..00000000
--- a/frontend/src/app/training/training.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { TrainingComponent } from './training.component';
-
-describe('TrainingComponent', () => {
- let component: TrainingComponent;
- let fixture: ComponentFixture<TrainingComponent>;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ TrainingComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(TrainingComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/frontend/src/app/training/training.component.ts b/frontend/src/app/training/training.component.ts
deleted file mode 100644
index a0bec8e2..00000000
--- a/frontend/src/app/training/training.component.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
-import Shared from '../Shared';
-import Experiment from '../_data/Experiment';
-import Model, { ProblemType } from '../_data/Model';
-import { MetricViewComponent } from '../_elements/metric-view/metric-view.component';
-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 {
-
- @ViewChild(ModelLoadComponent) modelLoadComponent?: ModelLoadComponent;
- @ViewChild("trainButton") trainButtonRef!: ElementRef;
-
- @ViewChild(MetricViewComponent) metricViewComponent!: MetricViewComponent;
-
- myExperiments?: Experiment[];
- selectedExperiment?: Experiment;
- selectedModel?: Model;
-
- trainingResult: any;
-
- history: any[] = [];
-
- term: string = "";
-
- constructor(private modelsService: ModelsService, private route: ActivatedRoute, private experimentsService: ExperimentsService, private authService: AuthService, private signalRService: SignalRService) {
- }
-
- ngOnInit(): void {
- this.route.queryParams.subscribe(params => {
- let experimentId = this.route.snapshot.paramMap.get("id");
-
- this.fetchExperiments(experimentId);
-
- this.authService.loggedInEvent.subscribe(_ => {
- this.fetchExperiments(experimentId);
-
- this.signalRService.startConnection();
- });
-
- console.log(this.signalRService.hubConnection);
- if (this.signalRService.hubConnection) {
- this.signalRService.hubConnection.on("NotifyEpoch", (mName: string, mId: string, stat: string, totalEpochs: number, currentEpoch: number) => {
- console.log(this.selectedModel?._id, mId);
- if (this.selectedModel?._id == mId) {
- stat = stat.replace(/'/g, '"');
- this.trainingResult = JSON.parse(stat);
- //console.log('JSON', this.trainingResult);
- this.history.push(this.trainingResult);
- this.metricViewComponent.update(this.history);
- }
- });
- }
- });
- }
-
- fetchExperiments(andSelectWithId: string | null = '') {
- this.experimentsService.getMyExperiments().subscribe((experiments) => {
- this.myExperiments = experiments.reverse();
-
- this.selectedExperiment = this.myExperiments.filter(x => x._id == andSelectWithId)[0];
- if (this.modelLoadComponent)
- this.modelLoadComponent.newModel.type = this.selectedExperiment.type;
- });
- }
-
- selectThisExperiment(experiment: Experiment) {
- this.selectedExperiment = experiment;
- if (this.modelLoadComponent)
- this.modelLoadComponent.newModel.type = this.selectedExperiment.type;
- }
-
- selectModel(model: Model) {
- this.selectedModel = model;
- }
-
- trainModel() {
- this.trainingResult = undefined;
-
- if (this.selectedExperiment == undefined) {
- Shared.openDialog("Greška", "Molimo Vas da izaberete eksperiment iz kolekcije.");
- return;
- }
- if (this.selectedModel == undefined) {
- Shared.openDialog("Greška", "Molimo Vas da izaberete model.");
- return;
- }
- this.trainButtonRef.nativeElement.disabled = true;
- this.modelsService.trainModel(this.selectedModel._id, this.selectedExperiment._id).subscribe((response: any) => {
- //console.log('Train model complete!', response);
- this.trainButtonRef.nativeElement.disabled = false;
- Shared.openDialog("Obaveštenje", "Treniranje modela je počelo!");
- this.trainingResult = response;
- });
- }
-}