diff --git a/package.json b/package.json
index cb4cc2a..b623695 100644
--- a/package.json
+++ b/package.json
@@ -22,15 +22,16 @@
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
+ "@thisissoon/angular-inviewport": "^4.2.2",
"core-js": "^2.5.4",
- "hammerjs": "^2.0.8",
"firebase": "^5.1.0",
+ "hammerjs": "^2.0.8",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
"devDependencies": {
- "@angular-devkit/build-angular": "~0.13.0",
+ "@angular-devkit/build-angular": "^0.13.9",
"@angular/cli": "~7.3.8",
"@angular/compiler-cli": "~7.2.0",
"@angular/language-service": "~7.2.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 6e3513d..9844fbd 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -14,11 +14,13 @@ import {AppComponent} from './app.component';
import {AppRouting} from './app.routing';
import {AdminComponent} from './admin/admin.component';
import {AngularFireAuthModule} from '@angular/fire/auth';
+import {ConsoleComponent} from './components/console/console.component';
@NgModule({
declarations: [
AdminComponent,
AppComponent,
+ ConsoleComponent,
HomeComponent,
SlideShowComponent,
TypewriterComponent
diff --git a/src/app/components/console/console.component.html b/src/app/components/console/console.component.html
new file mode 100644
index 0000000..d8b087d
--- /dev/null
+++ b/src/app/components/console/console.component.html
@@ -0,0 +1,8 @@
+
diff --git a/src/app/components/console/console.component.ts b/src/app/components/console/console.component.ts
new file mode 100644
index 0000000..4d64d15
--- /dev/null
+++ b/src/app/components/console/console.component.ts
@@ -0,0 +1,32 @@
+import {Component} from '@angular/core';
+import {AppStore} from '../../app.store';
+import {map} from 'rxjs/operators';
+
+@Component({
+ selector: 'console',
+ templateUrl: './console.component.html'
+})
+export class ConsoleComponent {
+ private done = false;
+
+ input = './motd.sh';
+ output = [];
+ quote;
+
+ constructor(private store: AppStore) {
+ store.quotes.subscribe(quotes => {
+ const quote = quotes[Math.floor(Math.random() * quotes.length)];
+ this.quote = quote.text;
+ });
+ }
+
+ enter() {
+ if(this.done) return;
+ setTimeout(() => {
+ this.output.push(this.input);
+ this.input = '';
+ setTimeout(() => this.output.push(this.quote), 500);
+ }, 1500);
+ this.done = true;
+ }
+}
diff --git a/src/app/components/typewriter/typewriter.component.scss b/src/app/components/typewriter/typewriter.component.scss
index 8c8e97b..7fba207 100644
--- a/src/app/components/typewriter/typewriter.component.scss
+++ b/src/app/components/typewriter/typewriter.component.scss
@@ -1,22 +1,22 @@
@import url("https://fonts.googleapis.com/css?family=Arvo");
-.typewriter h1 {
- color: white;
- overflow: hidden;
- border-right: .15em solid white;
- margin: 0 auto;
- letter-spacing: .15em;
- animation: blink-caret 1s step-end infinite;
- display: inline;
- font-family: 'Arvo', serif;
+.typewriter {
+ h1,h2,h3,h4,h5,h6 {
+ overflow: hidden;
+ margin: 0 auto;
+ letter-spacing: .15em;
+ animation: blink-caret 1s step-end infinite;
+ display: inline;
+ font-family: 'Arvo', serif;
+ }
- @keyframes typing {
- from { width: 0 }
- to { width: 100% }
- }
+ @keyframes typing {
+ from { width: 0 }
+ to { width: 100% }
+ }
- @keyframes blink-caret {
- from, to { border-color: transparent }
- 50% { border-color: white; }
- }
+ @keyframes blink-caret {
+ from, to { border-right: .15em solid; }
+ 50% { border: none; }
+ }
}
diff --git a/src/app/components/typewriter/typewriter.component.ts b/src/app/components/typewriter/typewriter.component.ts
index 564603c..a78e939 100644
--- a/src/app/components/typewriter/typewriter.component.ts
+++ b/src/app/components/typewriter/typewriter.component.ts
@@ -1,21 +1,27 @@
-import {Component, Input} from '@angular/core';
+import {Component, EventEmitter, Input, Output} from '@angular/core';
import {Observable, timer} from 'rxjs';
-import {filter, map} from 'rxjs/operators';
+import {filter, map, tap} from 'rxjs/operators';
@Component({
selector: 'typewriter',
template: `
-
{{output | async}} `,
+
{{output | async}} `,
styleUrls: ['typewriter.component.scss']
})
export class TypewriterComponent {
@Input() delay = 1500;
@Input() speed = 100;
-
- @Input()
- set text(text: string) {
- this.output = timer(this.delay, this.speed).pipe(filter(n => n <= (text.length || 0)), map(n => text.slice(0, n)));
+ @Input() set text(text: string) {
+ this.output = timer(this.delay, this.speed).pipe(
+ filter(n => n <= (text.length || 0)),
+ tap(n => {
+ if(n == text.length) this.done.emit();
+ }),
+ map(n => text.slice(0, n))
+ );
}
+ @Output() done = new EventEmitter();
+
output: Observable;
}
diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html
index 7666923..51caac8 100644
--- a/src/app/home/home.component.html
+++ b/src/app/home/home.component.html
@@ -1,11 +1,7 @@
-
-
-
+
+
+
-
Disclaimer
- This site is currently under complete renovations as it moves from Django to Angular + Firebase
-
About Zak
- Zak was born with a keyboard in hand and was learning his first programming language by thirteen. Nearly
- entirely self taught, Zak challenged his programming courses through both highschool and college while
- working in the industry to gain professional experience. He is very passionate about technology and as a
- lifelong learner it has opened the door to many other hobbies like robotics, space and physics. Some of his
- personal projects include a full sized arcade machine, home automation and a power wall for a home solar
- system.
+
-
+
+
About Me
+
+
+
+ Zak was born with a keyboard in hand and was learning his first programming language by thirteen. Nearly
+ entirely self taught, Zak challenged his programming courses through both highschool and college while
+ working in the industry to gain professional experience. He is very passionate about technology and as a
+ lifelong learner it has opened the door to many other hobbies like robotics, space and physics. Some of his
+ personal projects include a full sized arcade machine, home automation and a power wall for a home solar
+ system.
+
+
+
+
+
+
+
+
+
Copyright © Zakary Timson 2019 | All Rights Reserved
+
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts
index d77ffb4..ff94605 100644
--- a/src/app/home/home.component.ts
+++ b/src/app/home/home.component.ts
@@ -1,19 +1,7 @@
import { Component } from '@angular/core';
-import {AppStore} from '../app.store';
-import {Observable} from 'rxjs';
-import {map} from 'rxjs/operators';
@Component({
selector: 'home',
templateUrl: './home.component.html'
})
-export class HomeComponent {
- quote: Observable
;
-
- constructor(private store: AppStore) {
- this.quote = store.quotes.pipe(map(quotes => {
- let quote = quotes[Math.floor(Math.random() * quotes.length)];
- return quote.text;
- }))
- }
-}
+export class HomeComponent { }
diff --git a/src/assets/img/DCP00222.jpg b/src/assets/img/DCP00222.jpg
deleted file mode 100644
index 09ed203..0000000
Binary files a/src/assets/img/DCP00222.jpg and /dev/null differ
diff --git a/src/assets/img/ZaksCode.gif b/src/assets/img/ZaksCode.gif
new file mode 100644
index 0000000..e8c8ab9
Binary files /dev/null and b/src/assets/img/ZaksCode.gif differ
diff --git a/src/assets/img/ZaksCode.png b/src/assets/img/ZaksCode.png
new file mode 100644
index 0000000..3fa3ed9
Binary files /dev/null and b/src/assets/img/ZaksCode.png differ
diff --git a/src/assets/img/background.jpg b/src/assets/img/background.jpg
deleted file mode 100644
index b31e366..0000000
Binary files a/src/assets/img/background.jpg and /dev/null differ
diff --git a/src/assets/img/keyboard-in-hand.jpg b/src/assets/img/keyboard-in-hand.jpg
new file mode 100644
index 0000000..a2a87be
Binary files /dev/null and b/src/assets/img/keyboard-in-hand.jpg differ
diff --git a/src/index.html b/src/index.html
index ce11117..b1e71fc 100644
--- a/src/index.html
+++ b/src/index.html
@@ -6,9 +6,18 @@
+
+
+
+
+
+
+
+
+
+
+
-
-
diff --git a/src/styles.scss b/src/styles.scss
index 02fd6db..78233f3 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -1,5 +1,21 @@
@import url("https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css");
@import url("https://use.fontawesome.com/releases/v5.8.1/css/all.css");
+@import url("https://fonts.googleapis.com/icon?family=Material+Icons|Roboto:300,400,500");
+
+::-webkit-scrollbar-track {
+ background-color: #354B72;
+}
+
+::-webkit-scrollbar {
+ width: 10px;
+ background-color: #354B72;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 5px;
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.5);
+ background-color: #354B72;
+}
html, body {
height: 100%;
@@ -8,5 +24,11 @@ html, body {
body {
margin: 0;
font-family: Roboto, sans-serif;
- background: #ffffff url("/assets/img/background.jpg") no-repeat fixed center;
+ background: #354B72 url("/assets/img/ZaksCode.gif") no-repeat fixed center;
}
+
+.skirt {
+ height: 3rem;
+ width: 100%;
+ background-color: #354B72;
+}
\ No newline at end of file