aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/app/_pages/experiment
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/app/_pages/experiment')
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.css17
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.html11
-rw-r--r--frontend/src/app/_pages/experiment/experiment.component.ts74
3 files changed, 93 insertions, 9 deletions
diff --git a/frontend/src/app/_pages/experiment/experiment.component.css b/frontend/src/app/_pages/experiment/experiment.component.css
index 5cb8c325..2fde8e7f 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.css
+++ b/frontend/src/app/_pages/experiment/experiment.component.css
@@ -29,4 +29,21 @@ mat-stepper {
.label {
color: white;
+}
+
+.steps-container {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ overflow-y: auto;
+}
+
+.step-content {
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
} \ 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 2c69ae9c..86b40cec 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.html
+++ b/frontend/src/app/_pages/experiment/experiment.component.html
@@ -20,6 +20,7 @@
<div class="d-flex flex-colum align-items-center sidenav">
<mat-stepper orientation="vertical" (selectionChange)="changePage($event)">
<mat-step>
+ <!--editable="false"-->
<ng-template matStepLabel><span class="label">Izvor podataka</span></ng-template>
<ng-template matStepContent>
<p>Izaberite vas izvor podataka</p>
@@ -37,14 +38,14 @@
</mat-step>
</mat-stepper>
</div>
- <div class="d-flex flex-colum w-100 position-relative">
- <div *ngIf="event==0">
- <app-folder></app-folder>
+ <div #stepsContainer class="steps-container">
+ <div #steps id="step_1" class="step-content">
+ <app-folder (okPressed)="goToPage(1)"></app-folder>
</div>
- <div *ngIf="event==1">
+ <div #steps id="step_2" class="step-content">
<div class="text-offwhite" style="height: 100px;width: 100px;background-color: red;top:50%;left: 50%;position: absolute;">Insert odabir kolona</div>
</div>
- <div *ngIf="event==2">
+ <div #steps id="step_3" class="step-content">
<div class="text-offwhite" style="height: 100px;width: 100px;background-color: blue;top:50%;left: 50%;position: absolute;">Insert treniranje</div>
</div>
</div>
diff --git a/frontend/src/app/_pages/experiment/experiment.component.ts b/frontend/src/app/_pages/experiment/experiment.component.ts
index 2d623709..377866d1 100644
--- a/frontend/src/app/_pages/experiment/experiment.component.ts
+++ b/frontend/src/app/_pages/experiment/experiment.component.ts
@@ -1,20 +1,86 @@
-import { Component, ViewEncapsulation } from '@angular/core';
+import { AfterViewInit, Component, ElementRef, ViewChild, ViewChildren } from '@angular/core';
import { StepperSelectionEvent } from '@angular/cdk/stepper';
+import { MatStepper } from '@angular/material/stepper';
+import Shared from 'src/app/Shared';
+
@Component({
selector: 'app-experiment',
templateUrl: './experiment.component.html',
styleUrls: ['./experiment.component.css']
})
-export class ExperimentComponent {
+export class ExperimentComponent implements AfterViewInit {
+
+ @ViewChild(MatStepper) stepper!: MatStepper;
+ @ViewChild('stepsContainer') stepsContainer!: ElementRef;
+ @ViewChildren('steps') steps!: ElementRef[];
event: number = 0;
constructor() { }
+ stepHeight = this.calcStepHeight();
+
+ calcStepHeight() {
+ return window.innerHeight - 64;
+ }
+
+ ngAfterViewInit(): void {
+ window.addEventListener('resize', () => {
+ this.updatePageHeight();
+ })
+ this.updatePageHeight();
+
+ setInterval(() => {
+ this.updatePageIfScrolled();
+ }, 200);
+
+ this.stepsContainer.nativeElement.addEventListener('scroll', (event: Event) => {
+ Shared.emitBGScrollEvent(this.stepsContainer.nativeElement.scrollTop);
+ });
+ }
+
+ updatePageIfScrolled() {
+ if (this.scrolling) return;
+ const currentPage = Math.round(this.stepsContainer.nativeElement.scrollTop / this.stepHeight)
+ this.stepper.selectedIndex = currentPage;
+ }
+
+ updatePageHeight() {
+ this.stepHeight = this.calcStepHeight();
+ const stepHeight = `${this.stepHeight}px`;
+ this.stepsContainer.nativeElement.style.minHeight = stepHeight;
+ this.steps.forEach(step => {
+ step.nativeElement.style.minHeight = stepHeight;
+ })
+ }
+
changePage(event: StepperSelectionEvent) {
- this.event = event.selectedIndex;
- console.log(this.event);
+ this.updatePage(<number>event.selectedIndex)
+ }
+
+ goToPage(pageNum: number) {
+ this.stepper.selectedIndex = pageNum;
+ this.updatePage(pageNum);
+ }
+
+ updatePage(pageNum: number) {
+ this.event = pageNum;
+ let scrollAmount = 0;
+ this.steps.forEach((step, index) => {
+ if (index == pageNum) {
+ scrollAmount = step.nativeElement.offsetTop;
+ }
+ })
+ this.scrolling = true;
+ setTimeout(() => {
+ this.scrolling = false;
+ }, 1000);
+ this.stepsContainer.nativeElement.scroll({
+ top: scrollAmount,
+ behavior: 'smooth' //auto, smooth, initial, inherit
+ });
}
+ scrolling: boolean = false;
}