diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 000c61e..cf7935c 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -15,6 +15,7 @@ import { PortfolioComponent } from './portfolio/portfolio.component';
import { DetailComponent } from './detail/detail.component';
import { AdminComponent } from './admin/admin.component';
import { HomeComponent } from './home/home.component';
+import { SpinnerComponent } from './spinner/spinner.component';
@NgModule({
declarations: [
@@ -25,7 +26,8 @@ import { HomeComponent } from './home/home.component';
PortfolioComponent,
DetailComponent,
AdminComponent,
- HomeComponent
+ HomeComponent,
+ SpinnerComponent
],
imports: [
BrowserModule,
diff --git a/src/app/detail/detail.component.html b/src/app/detail/detail.component.html
index d15145a..488b0f3 100644
--- a/src/app/detail/detail.component.html
+++ b/src/app/detail/detail.component.html
@@ -63,7 +63,6 @@
-
+
+
diff --git a/src/app/detail/detail.component.ts b/src/app/detail/detail.component.ts
index 23c6ba7..00d9403 100644
--- a/src/app/detail/detail.component.ts
+++ b/src/app/detail/detail.component.ts
@@ -15,6 +15,8 @@ import { environment } from '../../environments/environment'
export class DetailComponent implements OnInit {
public basePath = `${environment.BASE_PATH}`
+ public loaded = false
+ public init = false
@ViewChild(NgxImageGalleryComponent) ngxImageGallery: NgxImageGalleryComponent
@@ -46,6 +48,10 @@ export class DetailComponent implements OnInit {
this.showDetails(this.section, this.id)
}
+ ngAfterContentInit() {
+ this.init = true
+ }
+
showDetails(section, id, title = ''): void {
this.galleryImages = []
this.apisService.getDetails(section, id).toPromise().then((response) => {
@@ -83,6 +89,8 @@ export class DetailComponent implements OnInit {
this.loadedImages.push(true)
}
})
+
+ this.loaded = !this.loadedImages.length
this.details = detail
},(error) => {
@@ -108,6 +116,7 @@ export class DetailComponent implements OnInit {
onLoad(index): void {
this.loadedImages[index] = false
+ this.loaded = this.init && this.loadedImages.every( (val) => !val)
}
diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html
index 7ee6a34..2a92674 100644
--- a/src/app/home/home.component.html
+++ b/src/app/home/home.component.html
@@ -3,8 +3,8 @@
-
-

+
+
{{item.title}}
@@ -26,5 +26,6 @@
-
+
+
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts
index 66c8994..131f80e 100644
--- a/src/app/home/home.component.ts
+++ b/src/app/home/home.component.ts
@@ -13,6 +13,8 @@ export class HomeComponent implements OnInit {
@ViewChild('scrollContent') scrollContent: ElementRef
public basePath = `${environment.BASE_PATH}`
+ public loaded = false
+ public init = false
public homeItems: any = []
public section: string = 'portfolio'
@@ -50,23 +52,16 @@ export class HomeComponent implements OnInit {
})
}
- ngAfterViewInit() {
+ ngAfterContentInit() {
+
+ this.init = true
+
setInterval( () => {
- console.log(this.paused)
if(!this.paused) {
const scrollWidth = 300
const scrollPos = parseInt(this.scrollContent.nativeElement.style.marginLeft) || 0
- /*
- switch(dir) {
- case 'prev':
- this.scrollPos = scrollPos + scrollWidth >= 0 ? 0 : scrollPos + scrollWidth
- break;
- case 'next':*/
- this.scrollPos = scrollPos - scrollWidth <= -(this.scrollContent.nativeElement.offsetWidth - document.body.clientWidth) ?
- -(this.scrollContent.nativeElement.offsetWidth - document.body.clientWidth) : scrollPos - scrollWidth
- /*
- break;
- }*/
+ this.scrollPos = scrollPos - scrollWidth <= -(this.scrollContent.nativeElement.offsetWidth - document.body.clientWidth) ?
+ -(this.scrollContent.nativeElement.offsetWidth - document.body.clientWidth) : scrollPos - scrollWidth
this.scrollContent.nativeElement.style.marginLeft = this.scrollPos + 'px'
}
},2000)
@@ -79,6 +74,7 @@ export class HomeComponent implements OnInit {
onLoad(id): void {
this.homeItems.filter(item => item.id == id)[0].loading = false
+ this.loaded = this.init && this.homeItems.every( (val) => !val.loading)
}
scroll(dir): void {
diff --git a/src/app/portfolio/portfolio.component.html b/src/app/portfolio/portfolio.component.html
index c84d12b..dc8c0fd 100644
--- a/src/app/portfolio/portfolio.component.html
+++ b/src/app/portfolio/portfolio.component.html
@@ -25,3 +25,5 @@
+
+
diff --git a/src/app/portfolio/portfolio.component.ts b/src/app/portfolio/portfolio.component.ts
index 34dbbbf..f7f2c66 100644
--- a/src/app/portfolio/portfolio.component.ts
+++ b/src/app/portfolio/portfolio.component.ts
@@ -11,6 +11,8 @@ import { environment } from '../../environments/environment'
export class PortfolioComponent implements OnInit {
public basePath = `${environment.BASE_PATH}`
+ public loaded = false
+ public init = false
public portfolioItems: any = []
public section: string = ''
@@ -65,6 +67,10 @@ export class PortfolioComponent implements OnInit {
})
}
+ ngAfterContentInit() {
+ this.init = true
+ }
+
showDetails(id, title = ''): void {
const section = this.section == 'exhibitions' ? 'exhibitions' : 'works'
this.router.navigate([`/detail/${section}/${id}/${title.toLowerCase().replace(/[^a-zA-Z0-9]/g, '_')}`])
@@ -72,6 +78,7 @@ export class PortfolioComponent implements OnInit {
onLoad(id): void {
this.portfolioItems.filter(item => item.id == id)[0].loading = false
+ this.loaded = this.init && this.portfolioItems.every( (val) => !val.loading)
}
}
diff --git a/src/app/spinner/spinner.component.html b/src/app/spinner/spinner.component.html
new file mode 100644
index 0000000..9edd48e
--- /dev/null
+++ b/src/app/spinner/spinner.component.html
@@ -0,0 +1,2 @@
+
+
diff --git a/src/app/spinner/spinner.component.scss b/src/app/spinner/spinner.component.scss
new file mode 100644
index 0000000..4557eef
--- /dev/null
+++ b/src/app/spinner/spinner.component.scss
@@ -0,0 +1,19 @@
+@import "../../assets/scss/variables";
+
+.spinner {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 100vh;
+ width: 100vw;
+ background: $black-alpha;
+ background-image: url('/assets/images/loader.svg');
+ background-size: 200px 200px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ z-index: 100;
+
+ &.active {
+ display: block;
+ }
+}
diff --git a/src/app/spinner/spinner.component.ts b/src/app/spinner/spinner.component.ts
new file mode 100644
index 0000000..536f259
--- /dev/null
+++ b/src/app/spinner/spinner.component.ts
@@ -0,0 +1,50 @@
+import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core'
+
+@Component({
+ selector: 'app-spinner',
+ templateUrl: './spinner.component.html',
+ styleUrls: ['./spinner.component.scss']
+})
+
+export class SpinnerComponent implements OnInit {
+
+ @ViewChild('spinner') spinner: ElementRef
+ @Input() show: boolean = false
+
+ ngOnInit(): void {
+ }
+/*
+ loader(action) {
+ let op = 0
+ let timer = null
+
+ switch(action) {
+ case 'show':
+ op = 1
+ timer = setInterval(() => {
+ if(op <= 0.1){
+ clearInterval(timer)
+ this.spinner.nativeElement.style.display = 'none'
+ }
+ this.spinner.nativeElement.style.opacity = op
+ this.spinner.nativeElement.style.filter = 'alpha(opacity=' + op * 100 + ")"
+ op -= op * 0.1
+ }, 50)
+
+ break
+ case 'hide':
+ op = 0.1
+ this.spinner.nativeElement.style.display = 'block'
+ timer = setInterval(() => {
+ if(op >= 1){
+ clearInterval(timer)
+ }
+ this.spinner.nativeElement.style.opacity = op
+ this.spinner.nativeElement.style.filter = 'alpha(opacity=' + op * 100 + ")"
+ op += op * 0.1
+ }, 50)
+
+ break
+ }
+ }*/
+}