This commit is contained in:
Le Deng
2017-03-05 12:29:38 -05:00
parent 899840faf8
commit 669f599377
12 changed files with 239 additions and 20 deletions

View File

@@ -22,6 +22,7 @@
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"core-js": "^2.4.1",
"hammerjs": "^2.0.8",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.7.2"

View File

@@ -1,3 +1,2 @@
<h1>
{{title}}
</h1>
<app-nav-bar></app-nav-bar>
<router-outlet></router-outlet>

View File

@@ -1,12 +1,17 @@
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { routing } from './app.routing';
import { MaterialModule } from '@angular/material';
import 'hammerjs';
import { AppComponent } from './app.component';
import { NavBarComponent } from './components/nav-bar/nav-bar.component';
import {LoginService} from './services/login.service';
@NgModule({
declarations: [
AppComponent,
@@ -15,10 +20,14 @@ import { NavBarComponent } from './components/nav-bar/nav-bar.component';
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
routing,
MaterialModule
],
providers: [],
providers: [
LoginService
],
bootstrap: [AppComponent]
})
export class AppModule { }

View File

@@ -0,0 +1,11 @@
/**
* Created by z00382545 on 1/16/17.
*/
import {ModuleWithProviders} from '@angular/core';
import {Routes, RouterModule} from '@angular/router';
const appRoutes: Routes = [
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

View File

@@ -0,0 +1,9 @@
.example-container {
width: 500px;
}
.example-button-row {
display: flex;
align-items: center;
justify-content: space-around;
}

View File

@@ -1,3 +1,42 @@
<p>
nav-bar works!
</p>
<md-menu #appMenu="mdMenu">
<button md-menu-item> Settings </button>
<button md-menu-item> Help </button>
</md-menu>
<button md-icon-button [mdMenuTriggerFor]="appMenu">
<md-icon>more_vert</md-icon>
</button>
<md-select placeholder="Favorite food">
<md-option *ngFor="let food of foods" [value]="food.value">
{{ food.viewValue }}
</md-option>
</md-select>
<md-grid-list cols="4" rowHeight="100px">
<md-grid-tile
*ngFor="let tile of tiles"
[colspan]="tile.cols"
[rowspan]="tile.rows"
[style.background]="tile.color">
{{tile.text}}
</md-grid-tile>
</md-grid-list>
<div class="example-container">
<h3>Normal Buttons</h3>
<div class="button-row">
<button md-button>Flat button</button>
<button md-raised-button>Raised button</button>
<button md-fab><md-icon>check</md-icon></button>
<button md-mini-fab><md-icon>check</md-icon></button>
</div>
<h3>Link Buttons</h3>
<div class="example-button-row">
<a md-button routerLink=".">Flat button</a>
<a md-raised-button routerLink=".">Raised button</a>
<a md-fab routerLink="."><md-icon>check</md-icon></a>
<a md-mini-fab routerLink="."><md-icon>check</md-icon></a>
</div>
</div>

View File

@@ -1,4 +1,6 @@
import { Component, OnInit } from '@angular/core';
import {LoginService} from "../../services/login.service";
import {Router} from "@angular/router";
@Component({
selector: 'app-nav-bar',
@@ -6,10 +8,43 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./nav-bar.component.css']
})
export class NavBarComponent implements OnInit {
private loggedIn = false;
constructor() { }
foods = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'}
];
tiles = [
{text: 'One', cols: 3, rows: 1, color: 'lightblue'},
{text: 'Two', cols: 1, rows: 2, color: 'lightgreen'},
{text: 'Three', cols: 1, rows: 1, color: 'lightpink'},
{text: 'Four', cols: 2, rows: 1, color: '#DDBDF1'},
];
constructor(private loginService: LoginService, private router: Router) { }
ngOnInit() {
this.loginService.checkSession().subscribe(
res => {
this.loggedIn=true;
},
error => {
this.loggedIn=false;
}
);
}
logout(){
this.loginService.logout().subscribe(
res => {
location.reload();
},
err => console.log(err)
);
// location.reload();
this.router.navigate(['/']);
}
}

View File

@@ -0,0 +1,16 @@
/* tslint:disable:no-unused-variable */
import { TestBed, async, inject } from '@angular/core/testing';
import { LoginService } from './login.service';
describe('LoginService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [LoginService]
});
});
it('should ...', inject([LoginService], (service: LoginService) => {
expect(service).toBeTruthy();
}));
});

View File

@@ -0,0 +1,40 @@
import {Injectable} from "@angular/core";
import {Http, Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class LoginService {
constructor (private http: Http) {}
sendCredential(username: string, password: string) {
let url = "http://localhost:8181/token";
let encodedCredentials = btoa(username+":"+password);
let basicHeader = "Basic "+ encodedCredentials;
let headers = new Headers(
{
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization' : basicHeader
// 'Access-Control-Allow-Credentials' : true
});
return this.http.get(url, {headers: headers});
}
checkSession() {
let url = "http://localhost:8181/checkSession";
let tokenHeader = new Headers ({
'x-auth-token' : localStorage.getItem("xAuthToken")
});
return this.http.get(url, {headers : tokenHeader});
}
logout() {
let url = "http://localhost:8181/user/logout";
let tokenHeader = new Headers ({
'x-auth-token' : localStorage.getItem("xAuthToken")
});
return this.http.post(url,'', {headers : tokenHeader});
}
}

View File

@@ -6,6 +6,7 @@
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>

View File

@@ -1 +1,2 @@
/* You can add global styles to this file, and also import other style files */
@import '~@angular/material/core/theming/prebuilt/deeppurple-amber.css';

View File

@@ -31,7 +31,9 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="37" column="176" lean-forward="false" selection-start-line="37" selection-start-column="176" selection-end-line="37" selection-end-column="176" />
<folding />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -51,7 +53,15 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="585">
<caret line="57" column="0" lean-forward="false" selection-start-line="57" selection-start-column="0" selection-end-line="58" selection-end-column="0" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#3437#3438#0" expanded="false" />
<element signature="e#3482#3483#0" expanded="false" />
<element signature="e#3608#3609#0" expanded="false" />
<element signature="e#3653#3654#0" expanded="false" />
<element signature="e#3725#3726#0" expanded="false" />
<element signature="e#3769#3770#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -61,7 +71,17 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="870">
<caret line="71" column="33" lean-forward="false" selection-start-line="71" selection-start-column="33" selection-end-line="71" selection-end-column="33" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#2400#2401#0" expanded="false" />
<element signature="e#2445#2446#0" expanded="false" />
<element signature="e#2503#2504#0" expanded="false" />
<element signature="e#2532#2533#0" expanded="false" />
<element signature="e#2605#2606#0" expanded="false" />
<element signature="e#2644#2645#0" expanded="false" />
<element signature="e#2752#2753#0" expanded="false" />
<element signature="e#2825#2826#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -675,12 +695,12 @@
<workItem from="1486538831944" duration="450000" />
<workItem from="1488378219247" duration="650000" />
<workItem from="1488461561430" duration="18419000" />
<workItem from="1488731165185" duration="327000" />
<workItem from="1488731165185" duration="698000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="62339000" />
<option name="totallyTimeSpent" value="62710000" />
</component>
<component name="ToolWindowManager">
<frame x="50" y="23" width="1351" height="797" extended-state="0" />
@@ -703,7 +723,7 @@
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32907802" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32907802" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Spring" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32907802" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@@ -801,7 +821,17 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="29" column="49" lean-forward="false" selection-start-line="29" selection-start-column="49" selection-end-line="29" selection-end-column="49" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#2400#2401#0" expanded="false" />
<element signature="e#2445#2446#0" expanded="false" />
<element signature="e#2503#2504#0" expanded="false" />
<element signature="e#2532#2533#0" expanded="false" />
<element signature="e#2605#2606#0" expanded="false" />
<element signature="e#2644#2645#0" expanded="false" />
<element signature="e#2752#2753#0" expanded="false" />
<element signature="e#2825#2826#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -809,7 +839,15 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#3437#3438#0" expanded="false" />
<element signature="e#3482#3483#0" expanded="false" />
<element signature="e#3608#3609#0" expanded="false" />
<element signature="e#3653#3654#0" expanded="false" />
<element signature="e#3725#3726#0" expanded="false" />
<element signature="e#3769#3770#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1037,7 +1075,17 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="870">
<caret line="71" column="33" lean-forward="false" selection-start-line="71" selection-start-column="33" selection-end-line="71" selection-end-column="33" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#2400#2401#0" expanded="false" />
<element signature="e#2445#2446#0" expanded="false" />
<element signature="e#2503#2504#0" expanded="false" />
<element signature="e#2532#2533#0" expanded="false" />
<element signature="e#2605#2606#0" expanded="false" />
<element signature="e#2644#2645#0" expanded="false" />
<element signature="e#2752#2753#0" expanded="false" />
<element signature="e#2825#2826#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1045,7 +1093,15 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="585">
<caret line="57" column="0" lean-forward="false" selection-start-line="57" selection-start-column="0" selection-end-line="58" selection-end-column="0" />
<folding />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#3437#3438#0" expanded="false" />
<element signature="e#3482#3483#0" expanded="false" />
<element signature="e#3608#3609#0" expanded="false" />
<element signature="e#3653#3654#0" expanded="false" />
<element signature="e#3725#3726#0" expanded="false" />
<element signature="e#3769#3770#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1061,7 +1117,9 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="37" column="176" lean-forward="false" selection-start-line="37" selection-start-column="176" selection-end-line="37" selection-end-column="176" />
<folding />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>