diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
index 7eb9d96..f5ebd70 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -1,13 +1,13 @@
import {async, TestBed} from '@angular/core/testing';
-import { InjectionToken } from "@angular/core";
+import { InjectionToken } from '@angular/core';
import {AppComponent} from './app.component';
-import {ToolbarComponent} from "./toolbar/toolbar.component";
-import {RouterTestingModule} from "@angular/router/testing";
-import { MatSidenavModule } from "@angular/material/sidenav";
-import { MatToolbarModule } from "@angular/material/toolbar";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
-import { RouterlessTracking } from "angulartics2";
-import { Angulartics2Piwik } from "angulartics2/piwik";
+import {ToolbarComponent} from './toolbar/toolbar.component';
+import {RouterTestingModule} from '@angular/router/testing';
+import { MatSidenavModule } from '@angular/material/sidenav';
+import { MatToolbarModule } from '@angular/material/toolbar';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
+import { RouterlessTracking } from 'angulartics2';
+import { Angulartics2Piwik } from 'angulartics2/piwik';
describe('AppComponent', () => {
let piwik: Angulartics2Piwik;
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index c6eacb8..629df7e 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -43,7 +43,7 @@ export const routerTransition = trigger('routerTransition', [
})
export class AppComponent {
constructor(private matomo: Angulartics2Piwik) {
- matomo.startTracking()
+ matomo.startTracking();
}
getState(outlet: RouterOutlet) {
diff --git a/src/app/project-keyword.pipe.ts b/src/app/project-keyword.pipe.ts
index f8e6603..21ab0b0 100644
--- a/src/app/project-keyword.pipe.ts
+++ b/src/app/project-keyword.pipe.ts
@@ -5,14 +5,24 @@ import {Pipe, PipeTransform} from '@angular/core';
})
export class ProjectKeywordPipe implements PipeTransform {
private keywords = [
- 'MySQL', 'Node', 'Express', 'RxJava', 'Dagger 2', 'Model View Presenter', 'Retrofit', 'Realm', 'Room', 'Model-View-View Model', 'SimpleStack'
+ 'MySQL',
+ 'Node',
+ 'Express',
+ 'RxJava',
+ 'Dagger 2',
+ 'Model View Presenter',
+ 'Retrofit',
+ 'Realm',
+ 'Room',
+ 'Model-View-View Model',
+ 'SimpleStack'
];
transform(value: String, args?: any): any {
this.keywords.forEach(keyword => {
- let keywordIndex = value.indexOf(keyword);
- if (keywordIndex != -1) {
- let boldKeyword = '' + value.substring(keywordIndex, keywordIndex + keyword.length) + '';
+ const keywordIndex = value.indexOf(keyword);
+ if (keywordIndex !== -1) {
+ const boldKeyword = '' + value.substring(keywordIndex, keywordIndex + keyword.length) + '';
value = value.replace(keyword, boldKeyword);
}
});
diff --git a/src/app/projects/project-item.ts b/src/app/projects/project-item.ts
index a79ec52..60125af 100644
--- a/src/app/projects/project-item.ts
+++ b/src/app/projects/project-item.ts
@@ -1,6 +1,6 @@
export class ProjectItem {
title: String;
applicationType: String;
- description: String
- imgLocation: String
+ description: String;
+ imgLocation: String;
}
diff --git a/src/app/projects/project.service.ts b/src/app/projects/project.service.ts
index 454d69b..38015a8 100644
--- a/src/app/projects/project.service.ts
+++ b/src/app/projects/project.service.ts
@@ -1,5 +1,50 @@
import {Injectable} from '@angular/core';
-import {ProjectItem} from "./project-item";
+import {ProjectItem} from './project-item';
+
+const projects = [
+ {
+ title: 'Movies',
+ applicationType: 'Android Application (Kotlin)',
+ // tslint:disable-next-line:max-line-length
+ description: 'Movies is an Android application for viewing movie and TV show info using the TMDB API. Movies is a Single Activity application, leveraging Model-View-View Model, Dagger 2, RxJava and SimpleStack for navigation. There is a focus on caching and a pleasant user experience even on slower networks by combining both in-memory and disk caching for quick load times, especially after a show details have been viewed.',
+ imgLocation: ''
+ },
+ {
+ title: 'Secure Notes',
+ applicationType: 'Android Application (Kotlin)',
+ // tslint:disable-next-line:max-line-length
+ description: 'Secure Notes is a simple note taking application with security in mind. There is a focus on clean' +
+ ' code, Model-View-View Model and loosely coupled components. I built this app to experiment with different' +
+ ' Android database libraries (Realm and Room), encryption and security, as well as a single Activity approach to' +
+ ' an Android app. (Under development).',
+ imgLocation: '../../assets/note-icon.png'
+ },
+ {
+ title: 'CorpsTime',
+ applicationType: 'Android Application (Java and Kotlin)',
+ description: 'CorpsTime is an Android application to view news, scores and the schedule of Drum Corps International' +
+ ' competitions. CorpsTime uses the Model View Presenter pattern and libraries such as Dagger 2, Retrofit and RxJava.',
+ imgLocation: '../../assets/corpstime.png'
+ },
+ {
+ title: 'CorpsTime Scraper and API',
+ applicationType: 'Express API powered by Node (Javascript)',
+ description: 'The CorpsTime scraper and API is the supporting code for the CorpsTime mobile application, written' +
+ ' in Javascript using Express, Node, and MySQL to gather and prepare data for the CorpsTime client. The scraper' +
+ ' runs nightly during the Drum Corps season to pull data from different websites and store and format it to be' +
+ ' later retrieved by the API. The API includes a handful of endpoints to get scores, different competing corps and' +
+ ' the upcoming events during the season.',
+ imgLocation: ''
+ },
+ {
+ title: 'Android Hues',
+ applicationType: 'Android Application (Kotlin)',
+ // tslint:disable-next-line:max-line-length
+ description: 'Android Hues is an Android application to control your Phillips Hue lights at home. Hues uses RxJava,' +
+ ' Dagger 2 and the Phillips Hue SDK in order to control the color, brightness and power state of your lights.',
+ imgLocation: '../../assets/android-hues.png'
+ }
+];
@Injectable({
providedIn: 'root'
@@ -10,48 +55,7 @@ export class ProjectService {
}
getProjects(): Promise> {
- return Promise.resolve(projects)
+ return Promise.resolve(projects);
}
}
-const projects = [
- {
- title: "Movies",
- applicationType: "Android Application (Kotlin)",
- description: "Movies is an Android application for viewing movie and TV show info using the TMDB API. Movies is a Single Activity application, leveraging Model-View-View Model, Dagger 2, RxJava and SimpleStack for navigation. There is a focus on caching and a pleasant user experience even on slower networks by combining both in-memory and disk caching for quick load times, especially after a show details have been viewed.",
- imgLocation: ""
- },
- {
- title: "Secure Notes",
- applicationType: "Android Application (Kotlin)",
- description: "Secure Notes is a simple note taking application with security in mind. There is a focus on clean" +
- " code, Model-View-View Model and loosely coupled components. I built this app to experiment with different" +
- " Android database libraries (Realm and Room), encryption and security, as well as a single Activity approach to" +
- " an Android app. (Under development).",
- imgLocation: "../../assets/note-icon.png"
- },
- {
- title: "CorpsTime",
- applicationType: "Android Application (Java and Kotlin)",
- description: "CorpsTime is an Android application to view news, scores and the schedule of Drum Corps International" +
- " competitions. CorpsTime uses the Model View Presenter pattern and libraries such as Dagger 2, Retrofit and RxJava.",
- imgLocation: "../../assets/corpstime.png"
- },
- {
- title: "CorpsTime Scraper and API",
- applicationType: "Express API powered by Node (Javascript)",
- description: "The CorpsTime scraper and API is the supporting code for the CorpsTime mobile application, written" +
- " in Javascript using Express, Node, and MySQL to gather and prepare data for the CorpsTime client. The scraper" +
- " runs nightly during the Drum Corps season to pull data from different websites and store and format it to be" +
- " later retrieved by the API. The API includes a handful of endpoints to get scores, different competing corps and" +
- " the upcoming events during the season.",
- imgLocation: ""
- },
- {
- title: "Android Hues",
- applicationType: "Android Application (Kotlin)",
- description: "Android Hues is an Android application to control your Phillips Hue lights at home. Hues uses RxJava," +
- " Dagger 2 and the Phillips Hue SDK in order to control the color, brightness and power state of your lights.",
- imgLocation: "../../assets/android-hues.png"
- }
-];
diff --git a/src/app/projects/projects.component.spec.ts b/src/app/projects/projects.component.spec.ts
index 939349b..853ddb4 100644
--- a/src/app/projects/projects.component.spec.ts
+++ b/src/app/projects/projects.component.spec.ts
@@ -1,7 +1,7 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ProjectsComponent} from './projects.component';
-import {ProjectKeywordPipe} from "../project-keyword.pipe";
+import {ProjectKeywordPipe} from '../project-keyword.pipe';
describe('ProjectsComponent', () => {
let component: ProjectsComponent;
diff --git a/src/app/toolbar/toolbar.component.spec.ts b/src/app/toolbar/toolbar.component.spec.ts
index 1a1f4b9..ebbf1a1 100644
--- a/src/app/toolbar/toolbar.component.spec.ts
+++ b/src/app/toolbar/toolbar.component.spec.ts
@@ -1,10 +1,10 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ToolbarComponent} from './toolbar.component';
-import { MatSidenavModule } from "@angular/material/sidenav";
-import { MatToolbarModule } from "@angular/material/toolbar";
-import {RouterTestingModule} from "@angular/router/testing";
-import {Component} from "@angular/core";
+import { MatSidenavModule } from '@angular/material/sidenav';
+import { MatToolbarModule } from '@angular/material/toolbar';
+import {RouterTestingModule} from '@angular/router/testing';
+import {Component} from '@angular/core';
@Component({template: ''})
class DummyComponent {
@@ -36,12 +36,12 @@ describe('ToolbarComponent', () => {
});
it('should contain a material toolbar', () => {
- expect(fixture.debugElement.children[0].nativeElement.className).toBe("mat-drawer-container mat-sidenav-container")
+ expect(fixture.debugElement.children[0].nativeElement.className).toBe('mat-drawer-container mat-sidenav-container');
});
it('should contain 4 links, Home, Resume, Projects, Contact', () => {
- let debugElements = fixture.debugElement.queryAll((element) => {
- return element.nativeElement.className.indexOf("mat-toolbar") != -1;
+ const debugElements = fixture.debugElement.queryAll((element) => {
+ return element.nativeElement.className.indexOf('mat-toolbar') !== -1;
});
expect(debugElements[0].children.length).toBe(4);