diff options
author | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-03-10 01:07:14 +0100 |
---|---|---|
committer | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-03-10 01:07:14 +0100 |
commit | 8ed7debac7ba96babcbdee538f4db009afd6e340 (patch) | |
tree | 62c0be06050a02efcc3c686c2da165083b713ff5 /frontend/src/app | |
parent | e5853148a7277f7c76153701671a7df022634150 (diff) | |
parent | edb151a0e7de2c48de3ba38a0ddaff198936bd29 (diff) |
Merge branch 'frontendAddModel' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into dev
# Conflicts:
# frontend/src/app/app-routing.module.ts
# frontend/src/app/app.module.ts
Diffstat (limited to 'frontend/src/app')
-rw-r--r-- | frontend/src/app/_data/Model.ts | 53 | ||||
-rw-r--r-- | frontend/src/app/_pages/add-model/add-model.component.css | 0 | ||||
-rw-r--r-- | frontend/src/app/_pages/add-model/add-model.component.html | 62 | ||||
-rw-r--r-- | frontend/src/app/_pages/add-model/add-model.component.spec.ts | 25 | ||||
-rw-r--r-- | frontend/src/app/_pages/add-model/add-model.component.ts | 27 | ||||
-rw-r--r-- | frontend/src/app/app-routing.module.ts | 7 | ||||
-rw-r--r-- | frontend/src/app/app.module.ts | 4 |
7 files changed, 174 insertions, 4 deletions
diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts new file mode 100644 index 00000000..61c27ae6 --- /dev/null +++ b/frontend/src/app/_data/Model.ts @@ -0,0 +1,53 @@ +export default class Model { + constructor( + public name: string = 'Novi model', + public description: string = '', + public dateCreated: Date = new Date(), + public datasetId?: number, + + //Test set settings + public inputColumns: number[] = [0], + public columnToPredict: number = 1, + public randomTestSet: boolean = true, + public randomTestSetDistribution: number = 0.10, //0.1-0.9 (10% - 90%) + + // Neural net training settings + public encoding: Encoding = Encoding.Label, + public type: ANNType = ANNType.FullyConnected, + public optimizer: Optimizer = Optimizer.Adam, + public lossFunction: LossFunction = LossFunction.MeanSquaredError, + public inputNeurons: number = 1, + public hiddenLayerNeurons: number = 1, + public hiddenLayers: number = 1, + public batchSize: number = 5, + public inputLayerActivationFunction: ActivationFunction = ActivationFunction.Sigmoid, + public hiddenLayerActivationFunction: ActivationFunction = ActivationFunction.Sigmoid, + public outputLayerActivationFunction: ActivationFunction = ActivationFunction.Sigmoid + ) { } +} + +export enum ANNType { + FullyConnected = 'potpuno povezana', + Convolutional = 'konvoluciona' +} + +export enum Encoding { + Label = 'label', + OneHot = 'one hot' +} + +export enum ActivationFunction { + Relu = 'relu', + Sigmoid = 'sigmoid', + Tanh = 'tanh', + Linear = 'linear' +} + +export enum LossFunction { + BinaryCrossEntropy = 'binary_crossentropy', + MeanSquaredError = 'mean_squared_error' +} + +export enum Optimizer { + Adam = 'adam' +}
\ No newline at end of file diff --git a/frontend/src/app/_pages/add-model/add-model.component.css b/frontend/src/app/_pages/add-model/add-model.component.css new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/frontend/src/app/_pages/add-model/add-model.component.css diff --git a/frontend/src/app/_pages/add-model/add-model.component.html b/frontend/src/app/_pages/add-model/add-model.component.html new file mode 100644 index 00000000..a14411e5 --- /dev/null +++ b/frontend/src/app/_pages/add-model/add-model.component.html @@ -0,0 +1,62 @@ +<div class="container p-3" style="background-color: rgb(249, 251, 253);"> + + <h2 class="my-4 text-primary"> Nov model: </h2> + <div class="form-group row align-items-center"> + <label for="name" class="col-sm-2 col-form-label col-form-label-lg">Naziv</label> + <div class="col-sm-7"> + <input type="text" class="form-control form-control-lg" name="name" placeholder="Naziv..." + [(ngModel)]="newModel.name"> + </div> + + <div class="col-sm-3"> + + </div> + </div> + + <div class="form-group row my-2"> + <label for="desc" class="col-sm-2 col-form-label">Opis</label> + <div class="col-sm-10"> + <textarea class="form-control" name="desc" rows="3" [(ngModel)]="newModel.description"></textarea> + </div> + </div> + + <div style="flex-direction: column; align-items: center; justify-items: center;"> + <label for="type">Tip: </label> + <select id=typeOptions class="form-control" name="type" [(ngModel)]="newModel.type"> + <option *ngFor="let option of Object.keys(ANNType); let optionName of Object.values(ANNType)" + [value]="option"> + {{ optionName }} + </option> + </select> + </div> + + <!--<div class="form-group row"> + <label for="value" class="col-4">Vrednost</label> + <div class="input-group"> + <input type="number" min="0" class="form-control" name="value" placeholder="Vrednost..." + [(ngModel)]="newModel.value"> + <div class="input-group-prepend"> + <span class="input-group-text">#</span> + </div> + <input type="number" min="1" class="form-control" name="count" placeholder="Br." [(ngModel)]="newModel.count"> + <input type="text" class="form-control" name="sum" placeholder="Suma" + value="=({{newModel.value * newModel.count}})" readonly> + </div> +</div>--> + + <div class="my-4"> + <label for="dataset">Izvor podataka:</label> + <!--<app-upload-dataset id="dataset"></app-upload-dataset>--> + </div> + + <div class="form-group row"> + <div class="col-4"></div> + <button class="btn btn-lg btn-primary col-4" (click)="addModel();">Dodaj</button> + <div class="col-1"></div> + <div class="col-3"> + <input type="text" class="form-control-plaintext text-center" id="dateCreated" placeholder="--/--/--" + value="{{newModel.dateCreated | date: 'dd/MM/yyyy'}}" readonly> + </div> + </div> + +</div>
\ No newline at end of file diff --git a/frontend/src/app/_pages/add-model/add-model.component.spec.ts b/frontend/src/app/_pages/add-model/add-model.component.spec.ts new file mode 100644 index 00000000..2926e1c4 --- /dev/null +++ b/frontend/src/app/_pages/add-model/add-model.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddModelComponent } from './add-model.component'; + +describe('AddModelComponent', () => { + let component: AddModelComponent; + let fixture: ComponentFixture<AddModelComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddModelComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddModelComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/_pages/add-model/add-model.component.ts b/frontend/src/app/_pages/add-model/add-model.component.ts new file mode 100644 index 00000000..1836af52 --- /dev/null +++ b/frontend/src/app/_pages/add-model/add-model.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; +import Model from 'src/app/_data/Model'; +import { ANNType } from 'src/app/_data/Model'; + +@Component({ + selector: 'app-add-model', + templateUrl: './add-model.component.html', + styleUrls: ['./add-model.component.css'] +}) +export class AddModelComponent implements OnInit { + + newModel: Model + ANNType = ANNType; + Object = Object; + + constructor() { + this.newModel = new Model(); + } + + ngOnInit(): void { + } + + addModel() { + //TODO + } + +} diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index af8bc237..c592d57b 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -1,17 +1,18 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { AuthGuardService } from './_services/auth-guard.service'; import { LoginPageComponent } from './_pages/login-page/login-page.component'; import { OnlyAuthorizedComponent } from './_pages/only-authorized/only-authorized.component'; import { RegisterPageComponent } from './_pages/register-page/register-page.component'; -import { AuthGuardService } from './_services/auth-guard.service'; -import { DatasetLoadComponent } from './_elements/dataset-load/dataset-load.component'; +import { AddModelComponent } from './_pages/add-model/add-model.component'; const routes: Routes = [ + { path: '', redirectTo: '/login', pathMatch: 'full' }, { path: 'login', component: LoginPageComponent }, { path: 'register', component: RegisterPageComponent }, { path: 'only-authorized', component: OnlyAuthorizedComponent, canActivate: [AuthGuardService] }, - { path: 'proba', component: DatasetLoadComponent} + { path: 'add-model', component: AddModelComponent } ]; @NgModule({ diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 4f26046e..16bb7ce5 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -11,6 +11,7 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { OnlyAuthorizedComponent } from './_pages/only-authorized/only-authorized.component'; import { DatasetLoadComponent } from './_elements/dataset-load/dataset-load.component'; import { NgxCsvParser } from 'ngx-csv-parser'; +import { AddModelComponent } from './_pages/add-model/add-model.component'; @NgModule({ declarations: [ @@ -18,7 +19,8 @@ import { NgxCsvParser } from 'ngx-csv-parser'; LoginPageComponent, RegisterPageComponent, OnlyAuthorizedComponent, - DatasetLoadComponent + DatasetLoadComponent, + AddModelComponent ], imports: [ BrowserModule, |