diff options
Diffstat (limited to 'frontend')
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, |