aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorDanijel Anđelković <adanijel99@gmail.com>2022-04-29 21:01:03 +0200
committerDanijel Anđelković <adanijel99@gmail.com>2022-04-29 21:01:03 +0200
commit7257f187324a59864d7db29c72fdb63f12900f40 (patch)
tree839fe5f6fa24b7a6ff4559faf2b89a4ed0f3e42a /frontend
parent6cfa4e691fd176c4d7fa67b67307d86bddfd7eeb (diff)
Promenio folder tako da pokazuje razlicite kategorije kao tabove.
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/app/_elements/column-table/column-table.component.css12
-rw-r--r--frontend/src/app/_elements/column-table/column-table.component.html6
-rw-r--r--frontend/src/app/_elements/column-table/column-table.component.ts2
-rw-r--r--frontend/src/app/_elements/folder/folder.component.css3
-rw-r--r--frontend/src/app/_elements/folder/folder.component.html23
-rw-r--r--frontend/src/app/_elements/folder/folder.component.ts112
-rw-r--r--frontend/src/app/_pages/archive/archive.component.html12
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.html4
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.ts3
-rw-r--r--frontend/src/app/_services/experiments.service.ts2
10 files changed, 145 insertions, 34 deletions
diff --git a/frontend/src/app/_elements/column-table/column-table.component.css b/frontend/src/app/_elements/column-table/column-table.component.css
index fdf69dbc..108efb32 100644
--- a/frontend/src/app/_elements/column-table/column-table.component.css
+++ b/frontend/src/app/_elements/column-table/column-table.component.css
@@ -192,7 +192,8 @@ table ::ng-deep .mat-form-field-wrapper {
}
.hidden {
- display: none;
+ visibility: hidden;
+ height: 1px;
}
.bottom-button {
@@ -210,4 +211,13 @@ table ::ng-deep .mat-form-field-wrapper {
display: flex;
flex-direction: row;
justify-content: center;
+}
+
+.pad-fix {
+ padding-top: 0.6rem;
+ padding-bottom: 0;
+}
+
+.long {
+ height: 3rem;
} \ No newline at end of file
diff --git a/frontend/src/app/_elements/column-table/column-table.component.html b/frontend/src/app/_elements/column-table/column-table.component.html
index 811df4bd..53cb3551 100644
--- a/frontend/src/app/_elements/column-table/column-table.component.html
+++ b/frontend/src/app/_elements/column-table/column-table.component.html
@@ -83,7 +83,7 @@
<tbody>
<tr>
<th>Tip</th>
- <td *ngFor="let colInfo of dataset.columnInfo; let i = index">
+ <td *ngFor="let colInfo of dataset.columnInfo; let i = index" class="pad-fix">
<mat-form-field>
<mat-select matNativeControl [(value)]="colInfo.isNumber">
<mat-option [value]="false">Kategorijski</mat-option>
@@ -120,11 +120,11 @@
</td>
</tr>
<tr style="padding: 0">
- <th class="brighter cell-align" (click)="openEncodingDialog()">
+ <th class="brighter cell-align long" (click)="openEncodingDialog()">
<span class="verticalAlign">Enkodiranje</span>&nbsp;
<span class="material-icons-round verticalAlign">settings</span>
</th>
- <td *ngFor="let colInfo of dataset.columnInfo; let i = index">
+ <td *ngFor="let colInfo of dataset.columnInfo; let i = index" class="pad-fix">
<mat-form-field>
<mat-select matNativeControl [(value)]="experiment.encodings[i].encoding">
<mat-option *ngFor="let option of Object.keys(Encoding); let optionName of Object.values(Encoding)" [value]="option">
diff --git a/frontend/src/app/_elements/column-table/column-table.component.ts b/frontend/src/app/_elements/column-table/column-table.component.ts
index 0745f73d..9cabf190 100644
--- a/frontend/src/app/_elements/column-table/column-table.component.ts
+++ b/frontend/src/app/_elements/column-table/column-table.component.ts
@@ -35,6 +35,8 @@ export class ColumnTableComponent implements AfterViewInit {
this.datasetService.getMyDatasets().subscribe((datasets) => {
this.dataset = datasets[0];
this.experiment = new Experiment();
+
+ console.log(datasets);
for (let i = 0; i < this.dataset?.columnInfo.length; i++) {
this.experiment?.inputColumns.push(this.dataset.columnInfo[i].columnName);
}
diff --git a/frontend/src/app/_elements/folder/folder.component.css b/frontend/src/app/_elements/folder/folder.component.css
index 458e6b4f..137a9643 100644
--- a/frontend/src/app/_elements/folder/folder.component.css
+++ b/frontend/src/app/_elements/folder/folder.component.css
@@ -21,7 +21,6 @@
justify-content: space-between;
align-items: center;
position: relative;
- overflow-x: hidden;
height: 2.5rem;
background-color: var(--ns-bg-dark-100);
border-color: var(--ns-primary);
@@ -32,7 +31,6 @@
.folder-tab:not(:first-child) {
margin-block-start: auto;
- width: 4rem;
}
.selected-tab {
@@ -54,6 +52,7 @@
color: var(--offwhite) !important;
text-decoration: none !important;
cursor: pointer;
+ padding: 0.5rem;
}
.tab-link:active {
diff --git a/frontend/src/app/_elements/folder/folder.component.html b/frontend/src/app/_elements/folder/folder.component.html
index 763a82a1..3497611e 100644
--- a/frontend/src/app/_elements/folder/folder.component.html
+++ b/frontend/src/app/_elements/folder/folder.component.html
@@ -1,21 +1,24 @@
<div id="folder">
<div id="tabs">
- <div id="new-file-tab" class="folder-tab p-1 rounded-top" [style]="'z-index:' + newFileZIndex() + ' ;'" [ngClass]="{'selected-tab' : newFileSelected, 'hover-tab' : hoveringOverFileIndex == -2}">
+ <div id="new-file-tab" class="folder-tab p-1 rounded-top" [style]="'z-index:' + (selectedTab == TabType.NewFile ? 11 : 10) + ' ;'" [ngClass]="{'selected-tab' : selectedTab == TabType.NewFile, 'hover-tab' : hoverTab == TabType.NewFile}">
<mat-icon class="text-offwhite">add</mat-icon>
- <a class="stretched-link tab-link" (click)="selectNewFile()" (mouseenter)="hoverOverFile(-2)" (mouseleave)="hoverOverFile(-1)">
- <p class="m-1" *ngIf="newFile != undefined">{{newFile.name}}</p>
+ <a class="stretched-link tab-link" (click)="selectTab(TabType.NewFile)" (mouseenter)="hoverOverTab(TabType.NewFile)" (mouseleave)="hoverOverTab(TabType.None)">
+ {{tabTitles[TabType.NewFile]}}
</a>
</div>
- <div class="folder-tab p-1 rounded-top" *ngFor="let file of filteredFiles; let i = index" [style]="'z-index:' + calcZIndex(i) + ' ;'" [ngClass]="{'selected-tab' : selectedFileIndex == i, 'hover-tab' : hoveringOverFileIndex == i}">
+ <!--<div class="folder-tab p-1 rounded-top" *ngFor="let file of filteredFiles; let i = index" [style]="'z-index:' + calcZIndex(i) + ' ;'" [ngClass]="{'selected-tab' : selectedFileIndex == i, 'hover-tab' : hoveringOverFileIndex == i}">
<a class="m-1 stretched-link tab-link" (click)="selectFile(i)" (mouseenter)="hoverOverFile(i)" (mouseleave)="hoverOverFile(-1)">{{file.name}}</a>
+ </div>-->
+ <div class="folder-tab p-1 rounded-top" *ngFor="let tab of tabsToShow; let i = index" [style]="'z-index:' + (selectedTab == tab ? 11 : (tabsToShow.length - i)) + ' ;'" [ngClass]="{'selected-tab' : selectedTab == tab, 'hover-tab' : hoverTab == tab}">
+ <a class="m-1 stretched-link tab-link" (click)="selectTab(tab)" (mouseenter)="hoverOverTab(tab)" (mouseleave)="hoverOverTab(TabType.None)">{{tabTitles[tab]}}</a>
</div>
</div>
<div id="selected-content" class="rounded-bottom text-offwhite">
- <div id="searchbar">
- <div id="path" class="ps-2">{{folderName}}
+ <div id="searchbar" *ngIf="listView">
+ <!-- <div id="path" class="ps-2">{{folderName}}
</div>
- <mat-icon>keyboard_arrow_right</mat-icon>
- <div id="search" class="text-offwhite">
+ <mat-icon>keyboard_arrow_right</mat-icon> -->
+ <div id="search" class="text-offwhite mx-1">
<mat-form-field>
<button matPrefix class="btn-clear input-icon"><mat-icon>search</mat-icon></button>
<input type="search" matInput name="search" [(ngModel)]="searchTerm" (input)="searchTermsChanged()">
@@ -40,9 +43,9 @@
<button class="btn-clear icon-toggle" data-bs-toggle="collapse" data-bs-target="#collapseSort" aria-expanded="false" aria-controls="collapseSort">
<mat-icon>sort</mat-icon>
</button>
- <button class="btn-clear icon-toggle separator" [ngClass]="{'icon-toggle-on': listView}" (click)="toggleListView()">
+ <!-- <button class="btn-clear icon-toggle separator" [ngClass]="{'icon-toggle-on': listView}" (click)="toggleListView()">
<mat-icon>view_list</mat-icon>
- </button>
+ </button> -->
</div>
</div>
<!--{{fileToDisplay ? fileToDisplay.name : 'No file selected.'}} {{selectedFileIndex}} {{hoveringOverFileIndex}}-->
diff --git a/frontend/src/app/_elements/folder/folder.component.ts b/frontend/src/app/_elements/folder/folder.component.ts
index eb1b9b98..ecf26355 100644
--- a/frontend/src/app/_elements/folder/folder.component.ts
+++ b/frontend/src/app/_elements/folder/folder.component.ts
@@ -4,6 +4,9 @@ import Experiment from 'src/app/_data/Experiment';
import { FolderFile, FolderType } from 'src/app/_data/FolderFile';
import Model from 'src/app/_data/Model';
import { DatasetsService } from 'src/app/_services/datasets.service';
+import { ExperimentsService } from 'src/app/_services/experiments.service';
+import { ModelsService } from 'src/app/_services/models.service';
+import { PredictorsService } from 'src/app/_services/predictors.service';
@Component({
selector: 'app-folder',
@@ -35,19 +38,36 @@ export class FolderComponent implements OnInit {
searchTerm: string = '';
- myDatasets: Dataset[] = [];
-
- constructor(private datasets: DatasetsService) {
+ constructor(private datasetsService: DatasetsService, private experimentsService: ExperimentsService, private modelsService: ModelsService, private predictorsService: PredictorsService) {
//PLACEHOLDER
this.forExperiment = new Experiment();
this.forExperiment.inputColumns = ['kolona1', 'kol2', '???', 'test'];
- this.datasets.getMyDatasets().subscribe((datasets) => {
- this.myDatasets = datasets;
+ this.folders[TabType.File] = [];
+ this.folders[TabType.NewFile] = [];
+
+ this.datasetsService.getMyDatasets().subscribe((datasets) => {
+ this.folders[TabType.MyDatasets] = datasets;
+ });
+
+ this.datasetsService.getPublicDatasets().subscribe((datasets) => {
+ this.folders[TabType.PublicDatasets] = datasets;
});
- this.files = this.myDatasets;
+ this.modelsService.getMyModels().subscribe((models) => {
+ this.folders[TabType.MyModels] = models;
+ });
+
+ /*this.modelsService.getMyModels().subscribe((models) => {
+ this.folders[TabType.PublicModels] = models;
+ });*/
+ this.folders[TabType.PublicModels] = [];
+
+ this.experimentsService.getMyExperiments().subscribe((experiments) => {
+ this.folders[TabType.MyExperiments] = experiments;
+ });
+ this.files = [];
this.filteredFiles.length = 0;
this.filteredFiles.push(...this.files);
@@ -78,7 +98,6 @@ export class FolderComponent implements OnInit {
if (!this.newFile) {
this.createNewFile();
}
- this.selectedFileIndex = -1;
this.fileToDisplay = this.newFile;
this.selectedFile = this.newFile;
this.newFileSelected = true;
@@ -87,7 +106,6 @@ export class FolderComponent implements OnInit {
}
selectFile(index: number) {
- this.selectedFileIndex = index;
this.selectedFile = this.filteredFiles[index];
this.fileToDisplay = this.filteredFiles[index];
this.newFileSelected = false;
@@ -111,7 +129,7 @@ export class FolderComponent implements OnInit {
// TODO
}
- calcZIndex(i: number) {
+ /*calcZIndex(i: number) {
let zIndex = (this.files.length - i - 1)
if (this.selectedFileIndex == i)
zIndex = this.files.length + 2;
@@ -122,7 +140,7 @@ export class FolderComponent implements OnInit {
newFileZIndex() {
return (this.files.length + 1);
- }
+ }*/
clearSearchTerm() {
this.searchTerm = '';
@@ -153,10 +171,84 @@ export class FolderComponent implements OnInit {
console.log('delete');
}
+ folders: { [tab: number]: FolderFile[] } = {};
+
+ tabTitles: { [tab: number]: string } = {
+ [TabType.File]: 'Fajl',
+ [TabType.NewFile]: 'Novi fajl',
+ [TabType.MyDatasets]: 'Moji izvori podataka',
+ [TabType.PublicDatasets]: 'Javni izvori podataka',
+ [TabType.MyModels]: 'Moje konfiguracije neuronske mreže',
+ [TabType.PublicModels]: 'Javne konfiguracije neuronske mreže',
+ [TabType.MyExperiments]: 'Eksperimenti',
+ };
+
FolderType = FolderType;
+
+ TabType = TabType;
+
+ @Input() tabsToShow: TabType[] = [
+ TabType.MyDatasets,
+ TabType.PublicDatasets,
+ TabType.MyModels,
+ TabType.PublicModels,
+ TabType.MyExperiments,
+ TabType.File
+ ]
+
+ @Input() selectedTab: TabType = TabType.NewFile;
+ hoverTab: TabType = TabType.None;
+
+ selectTab(tab: TabType) {
+ this.checkListView(tab);
+ this.selectedTab = tab;
+ this.files = this.folders[tab];
+
+ this.searchTermsChanged();
+ }
+
+ checkListView(tab: TabType) {
+ switch (tab) {
+ case TabType.File:
+ case TabType.NewFile:
+ case TabType.None:
+ this.listView = false;
+ break;
+ case TabType.MyExperiments:
+ case TabType.MyDatasets:
+ case TabType.MyModels:
+ case TabType.PublicDatasets:
+ case TabType.PublicModels:
+ this.listView = true;
+ break;
+ }
+ }
+
+ hoverOverTab(tab: TabType) {
+ this.checkListView(tab);
+ this.hoverTab = tab;
+ if (tab == TabType.None) {
+ this.checkListView(this.selectedTab);
+ this.files = this.folders[this.selectedTab];
+ } else {
+ this.files = this.folders[tab];
+ }
+ this.searchTermsChanged();
+ }
}
export enum Privacy {
Private,
Public
+}
+
+export enum TabType {
+ NewFile,
+ File,
+ MyDatasets,
+ PublicDatasets,
+ MyModels,
+ PublicModels,
+ MyExperiments,
+ None
} \ No newline at end of file
diff --git a/frontend/src/app/_pages/archive/archive.component.html b/frontend/src/app/_pages/archive/archive.component.html
index 8cc7f0fd..fc3c4763 100644
--- a/frontend/src/app/_pages/archive/archive.component.html
+++ b/frontend/src/app/_pages/archive/archive.component.html
@@ -1,9 +1,11 @@
-<div class="d-flex flex-column align-items-center">
- <div class="my-5" style="height: fit-content;">
+<div class="d-flex flex-column align-items-center my-5">
+ <app-folder></app-folder>
+
+ <!--<div class="my-5" style="height: fit-content;">
<app-playlist [datasets]="publicDatasets"></app-playlist>
- </div>
+ </div>-->
- <div id="cards" class="row align-items-view align-items-stretch justify-content-center">
+ <!--<div id="cards" class="row align-items-view align-items-stretch justify-content-center">
<div class="card shadowed bg-light text-light col-3 m-3" style="width: 18rem;">
<div class="card-body">
<mat-icon width="48px" height="48px" style="font-size: 48px; margin-left: 50%; transform: translateX(-100%);">model_training
@@ -43,5 +45,5 @@
</p>
</div>
</div>
- </div>
+ </div>-->
</div> \ No newline at end of file
diff --git a/frontend/src/app/_pages/experiment/experiment.component.html b/frontend/src/app/_pages/experiment/experiment.component.html
index 5206c5f2..08d709b2 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.html
+++ b/frontend/src/app/_pages/experiment/experiment.component.html
@@ -23,7 +23,7 @@
<div #stepsContainer class="steps-container">
<div #steps id="step_1" class="step-content">
<div class="step-content-inside">
- <app-folder [type]="FolderType.Dataset" (okPressed)="goToPage(1)"></app-folder>
+ <app-folder [type]="FolderType.Dataset" [tabsToShow]="[TabType.MyDatasets, TabType.PublicDatasets, TabType.File]" (okPressed)="goToPage(1)"></app-folder>
</div>
</div>
<div #steps id="step_2" class="step-content">
@@ -33,7 +33,7 @@
</div>
<div #steps id="step_3" class="step-content">
<div class="step-content-inside">
- <app-folder [type]="FolderType.Model" (okPressed)="goToPage(0)"></app-folder>
+ <app-folder [type]="FolderType.Model" [tabsToShow]="[TabType.MyModels, TabType.PublicModels, TabType.File]" (okPressed)="goToPage(0)"></app-folder>
</div>
</div>
</div>
diff --git a/frontend/src/app/_pages/experiment/experiment.component.ts b/frontend/src/app/_pages/experiment/experiment.component.ts
index d80ba70f..70f941b6 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.ts
+++ b/frontend/src/app/_pages/experiment/experiment.component.ts
@@ -3,6 +3,7 @@ import { StepperSelectionEvent } from '@angular/cdk/stepper';
import { MatStepper } from '@angular/material/stepper';
import Shared from 'src/app/Shared';
import { FolderType } from 'src/app/_data/FolderFile';
+import { TabType } from 'src/app/_elements/folder/folder.component';
@Component({
selector: 'app-experiment',
@@ -89,4 +90,6 @@ export class ExperimentComponent implements AfterViewInit {
FolderType = FolderType;
+ TabType = TabType;
+
}
diff --git a/frontend/src/app/_services/experiments.service.ts b/frontend/src/app/_services/experiments.service.ts
index 0d0d372b..bdaf62a7 100644
--- a/frontend/src/app/_services/experiments.service.ts
+++ b/frontend/src/app/_services/experiments.service.ts
@@ -1,7 +1,7 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
-import { Configuration } from '../configuration.service';
+import { Configuration } from './configuration.service';
import Experiment from '../_data/Experiment';
import { AuthService } from './auth.service';