aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/app/_data/Model.ts2
-rw-r--r--frontend/src/app/_elements/item-model/item-model.component.css0
-rw-r--r--frontend/src/app/_elements/item-model/item-model.component.html26
-rw-r--r--frontend/src/app/_elements/item-model/item-model.component.spec.ts25
-rw-r--r--frontend/src/app/_elements/item-model/item-model.component.ts18
-rw-r--r--frontend/src/app/_modals/login-modal/login-modal.component.ts8
-rw-r--r--frontend/src/app/_pages/add-model/add-model.component.html23
-rw-r--r--frontend/src/app/_pages/add-model/add-model.component.ts3
-rw-r--r--frontend/src/app/_pages/my-models/my-models.component.html5
-rw-r--r--frontend/src/app/_pages/my-models/my-models.component.ts15
-rw-r--r--frontend/src/app/_services/models.service.ts4
-rw-r--r--frontend/src/app/app.module.ts4
12 files changed, 120 insertions, 13 deletions
diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts
index 07364564..f6e01d08 100644
--- a/frontend/src/app/_data/Model.ts
+++ b/frontend/src/app/_data/Model.ts
@@ -107,7 +107,7 @@ export enum NullValueOptions {
}
export enum ReplaceWith {
- None = '...',
+ None = 'Popuni...',
Mean = 'Srednja vrednost',
Median = 'Medijana'
} \ No newline at end of file
diff --git a/frontend/src/app/_elements/item-model/item-model.component.css b/frontend/src/app/_elements/item-model/item-model.component.css
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/frontend/src/app/_elements/item-model/item-model.component.css
diff --git a/frontend/src/app/_elements/item-model/item-model.component.html b/frontend/src/app/_elements/item-model/item-model.component.html
new file mode 100644
index 00000000..ca170b3d
--- /dev/null
+++ b/frontend/src/app/_elements/item-model/item-model.component.html
@@ -0,0 +1,26 @@
+<!--
+<div class="card" style="min-width: 12rem;">
+ <div class="card-header">
+ {{model.name}}
+ </div>
+ <div class="card-body">
+ <p class="card-text">
+ {{model.description}}
+ </p>
+ <div class="d-flex flex-column align-items-center">
+ <table class="table table-bordered table-sm">
+ <thead>
+ <th class="text-center" *ngFor="let column of model.inputs">{{column}}</th>
+ </thead>
+ </table>
+ <mat-icon>arrow_downward</mat-icon>
+ <p>
+ {{model.output}}
+ </p>
+ </div>
+ </div>
+ <div class="card-footer text-center">
+ <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-model/item-model.component.spec.ts b/frontend/src/app/_elements/item-model/item-model.component.spec.ts
new file mode 100644
index 00000000..f696a160
--- /dev/null
+++ b/frontend/src/app/_elements/item-model/item-model.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ItemModelComponent } from './item-model.component';
+
+describe('ItemModelComponent', () => {
+ let component: ItemModelComponent;
+ let fixture: ComponentFixture<ItemModelComponent>;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ItemModelComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ItemModelComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/_elements/item-model/item-model.component.ts b/frontend/src/app/_elements/item-model/item-model.component.ts
new file mode 100644
index 00000000..7f85f43f
--- /dev/null
+++ b/frontend/src/app/_elements/item-model/item-model.component.ts
@@ -0,0 +1,18 @@
+import { Component, Input, OnInit } from '@angular/core';
+import Model from 'src/app/_data/Model';
+
+@Component({
+ selector: 'app-item-model',
+ templateUrl: './item-model.component.html',
+ styleUrls: ['./item-model.component.css']
+})
+export class ItemModelComponent implements OnInit {
+
+ @Input() model: Model = new Model();
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/frontend/src/app/_modals/login-modal/login-modal.component.ts b/frontend/src/app/_modals/login-modal/login-modal.component.ts
index 1b634c9a..c86c269a 100644
--- a/frontend/src/app/_modals/login-modal/login-modal.component.ts
+++ b/frontend/src/app/_modals/login-modal/login-modal.component.ts
@@ -2,6 +2,8 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { CookieService } from 'ngx-cookie-service';
import { AuthService } from 'src/app/_services/auth.service';
+import { UserInfoService } from 'src/app/_services/user-info.service';
+import shared from '../../Shared';
@Component({
selector: 'app-login-modal',
@@ -18,7 +20,8 @@ export class LoginModalComponent implements OnInit {
constructor(
private authService: AuthService,
private cookie: CookieService,
- private router: Router
+ private router: Router,
+ private userInfoService: UserInfoService
) { }
ngOnInit(): void {
@@ -36,6 +39,9 @@ export class LoginModalComponent implements OnInit {
else {
this.authService.authenticate(response);
(<HTMLSelectElement>document.getElementById('closeButton')).click();
+ this.userInfoService.getUserInfo().subscribe((response) => {
+ shared.photoId = response.photoId;
+ });
}
});
}
diff --git a/frontend/src/app/_pages/add-model/add-model.component.html b/frontend/src/app/_pages/add-model/add-model.component.html
index afd4ceb4..7e944a19 100644
--- a/frontend/src/app/_pages/add-model/add-model.component.html
+++ b/frontend/src/app/_pages/add-model/add-model.component.html
@@ -96,12 +96,12 @@
<input type="radio" [(ngModel)]="newModel.nullValues" [value]="NullValueOptions.DeleteRows"
class="form-check-input" value="deleteRows" name="fillMissing" id="delRows" checked
data-bs-toggle="collapse" data-bs-target="#fillMissingCustom.show">
- <label for="delRows" class="form-check-label">Obriši
+ <label for="delRows" class="form-check-label">Obriši sve
redove sa nedostajućim vrednostima</label><br>
<input type="radio" [(ngModel)]="newModel.nullValues" [value]="NullValueOptions.DeleteColumns"
class="form-check-input" value="deleteCols" name="fillMissing" id="delCols"
data-bs-toggle="collapse" data-bs-target="#fillMissingCustom.show">
- <label for="delCols" class="form-check-label">Obriši
+ <label for="delCols" class="form-check-label">Obriši sve
kolone sa nedostajućim vrednostima</label><br>
<input type="radio" [(ngModel)]="newModel.nullValues" [value]="NullValueOptions.Replace"
class="form-check-input" name="fillMissing" id="replace" data-bs-toggle="collapse"
@@ -114,11 +114,11 @@
<div id="columnReplacers">
<div *ngFor="let column of selectedDataset.header; let i = index" class="my-3">
<div class="input-group row" *ngIf="getInputById('cb_'+column).checked">
- <span class="input-group-text col-4 text-center">
+ <span class="input-group-text col-2 text-center">
{{column}}
</span>
- <input type="text" class="form-control col-4">
- <select [id]="'replaceOptions'+i" class="form-control col-4"
+ <input type="text" class="form-control col-2">
+ <select [id]="'replaceOptions'+i" class="form-control col-2"
*ngIf="isNumber(datasetFile[1][i])">
<option
*ngFor="let option of Object.keys(ReplaceWith); let optionName of Object.values(ReplaceWith)"
@@ -126,6 +126,19 @@
{{ optionName }}
</option>
</select>
+ <select [id]="'replaceOptions'+i" class="form-control col-2"
+ *ngIf="!isNumber(datasetFile[1][i])">
+ <option *ngFor="let option of arrayColumn(datasetFile, i)"
+ [value]="option">
+ {{ option }}
+ </option>
+ </select>
+ <label class="form-control col-2" [for]="'delCol_'+column">Izbriši kolonu
+ <input type="radio" [id]="'delCol_'+column"
+ [name]="'delOp_'+column"></label>
+ <label class="form-control col-2" [for]="'delRows_'+column">Izbriši redove
+ <input type="radio" [id]="'delRows_'+column" [name]="'delOp_'+column"
+ checked></label>
</div>
</div>
</div>
diff --git a/frontend/src/app/_pages/add-model/add-model.component.ts b/frontend/src/app/_pages/add-model/add-model.component.ts
index 156e51bc..fcc8ea70 100644
--- a/frontend/src/app/_pages/add-model/add-model.component.ts
+++ b/frontend/src/app/_pages/add-model/add-model.component.ts
@@ -271,8 +271,9 @@ export class AddModelComponent implements OnInit {
!isNaN(Number(value.toString())));
}
-
getInputById(id: string): HTMLInputElement {
return document.getElementById(id) as HTMLInputElement;
}
+
+ arrayColumn = (arr: any[][], n: number) => [...new Set(arr.map(x => x[n]))];
}
diff --git a/frontend/src/app/_pages/my-models/my-models.component.html b/frontend/src/app/_pages/my-models/my-models.component.html
index e69de29b..e94f67f5 100644
--- a/frontend/src/app/_pages/my-models/my-models.component.html
+++ b/frontend/src/app/_pages/my-models/my-models.component.html
@@ -0,0 +1,5 @@
+<ul class="list-group my-2">
+ <li class="list-group-item" *ngFor="let model of myModels">
+ <app-item-model [model]="model"></app-item-model>
+ </li>
+</ul> \ No newline at end of file
diff --git a/frontend/src/app/_pages/my-models/my-models.component.ts b/frontend/src/app/_pages/my-models/my-models.component.ts
index e9bc52de..3ab57e59 100644
--- a/frontend/src/app/_pages/my-models/my-models.component.ts
+++ b/frontend/src/app/_pages/my-models/my-models.component.ts
@@ -1,15 +1,22 @@
import { Component, OnInit } from '@angular/core';
+import Model from 'src/app/_data/Model';
@Component({
selector: 'app-my-models',
templateUrl: './my-models.component.html',
styleUrls: ['./my-models.component.css']
})
-export class MyModelsComponent implements OnInit {
+export class MyModelsComponent /*implements OnInit*/ {
+ myModels: Model[];
- constructor() { }
+ constructor() {
+ this.myModels = [
+ new Model('Titanik', 'Opis titanik'),
+ new Model('Neki drugi set', 'opis'),
+ new Model('Treci set', 'opis')
+ ]; }
- ngOnInit(): void {
+ /*ngOnInit(): void {
}
-
+*/
}
diff --git a/frontend/src/app/_services/models.service.ts b/frontend/src/app/_services/models.service.ts
index f629fd2a..d0346c03 100644
--- a/frontend/src/app/_services/models.service.ts
+++ b/frontend/src/app/_services/models.service.ts
@@ -42,4 +42,8 @@ export class ModelsService {
getMyDatasets(): Observable<Dataset[]> {
return this.http.get<Dataset[]>(`${API_SETTINGS.apiURL}/dataset/mydatasets`, { headers: this.authService.authHeader() });
}
+
+ getMyModels(): Observable<Model[]> {
+ return this.http.get<Model[]>(`${API_SETTINGS.apiURL}/model/mymodels`, { headers: this.authService.authHeader() });
+ }
}
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 4612e3a7..0531a958 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -36,6 +36,7 @@ import { BarchartComponent } from './barchart/barchart.component';
import { NotificationsComponent } from './_elements/notifications/notifications.component';
import { DatatableComponent } from './_elements/datatable/datatable.component';
import { FilterDatasetsComponent } from './_pages/filter-datasets/filter-datasets.component';
+import { ItemModelComponent } from './_elements/item-model/item-model.component';
@NgModule({
declarations: [
@@ -61,7 +62,8 @@ import { FilterDatasetsComponent } from './_pages/filter-datasets/filter-dataset
BarchartComponent,
NotificationsComponent,
DatatableComponent,
- FilterDatasetsComponent
+ FilterDatasetsComponent,
+ ItemModelComponent
],
imports: [
BrowserModule,