Files
2015-05-11 22:33:32 -05:00

203 lines
4.0 KiB
JavaScript

//import {Router} from 'ionic/routing/router'
import {For, Parent, bootstrap} from 'angular2/angular2'
import {Component, Directive} from 'angular2/src/core/annotations_impl/annotations';
import {View} from 'angular2/src/core/annotations_impl/view';
import {FormBuilder, Validators, FormDirectives, ControlGroup} from 'angular2/forms';
import {Log} from 'ionic/util'
import {
Router, Routable, List, Item, Nav, NavController,
Toolbar, ToolbarTitle, Button, Input, Tabs,
Tab, Content, Aside
} from 'ionic/ionic'
@Component()
@View({
templateUrl: 'pages/login.html',
directives: [FormDirectives, Button, Input, Content, Toolbar, ToolbarTitle]
})
export class LoginPage {
constructor( @Parent() viewport: NavController ) {
this.viewport = viewport
Log.log('LOGIN PAGE', this)
var fb = new FormBuilder()
this.loginForm = fb.group({
email: ['', Validators.required],
password: ['', Validators.required],
});
}
doLogin(event) {
Log.log('Doing login')
event.preventDefault();
console.log(this.loginForm.value);
//this.viewport.push(SecondPage)
}
doSignup(event) {
this.viewport.push(SignupPage)
}
}
new Routable(LoginPage, {
url: '/login',
tag: 'login'
})
@Component({
selector: 'signup-page'
})
@View({
templateUrl: 'pages/signup.html',
directives: [FormDirectives, Button, Input]
})
export class SignupPage {
constructor( @Parent() viewport: NavController ) { //, fb: FormBuilder ) {
this.viewport = viewport
Log.log('SIGNUP PAGE')
var fb = new FormBuilder()
this.signupForm = fb.group({
name: ['', Validators.required],
email: ['', Validators.required],
password: ['', Validators.required],
});
}
doLogin(event) {
this.viewport.pop()
}
doSignup(event) {
Log.log('Doing signup')
event.preventDefault();
console.log(this.signupForm.value);
this.viewport.push(AppPage)
//this.viewport.push(SecondPage)
}
}
@Component({
selector: 'app-page'
})
@View({
templateUrl: 'pages/app.html',
directives: [FormDirectives, Button, Input, Tabs, Tab]
})
export class AppPage {
constructor( @Parent() viewport: NavController ) { //, fb: FormBuilder ) {
this.viewport = viewport
this.streamTab = StreamTab
}
}
@Component({ selector: 'stream-tab' })
@View({
templateUrl: 'pages/tabs/home.html',
directives: [For, Content, List, Item]
})
class StreamTab {
constructor(@Parent() nav: NavController) {
this.nav = viewport;
this.posts = [
{'title': 'Just barked my first bark'},
{'title': 'Went poopy' }
];
}
selectPost(post) {
console.log('Select post', post);
this.nav.push(PostDetail, {
post
}, {
transition: '3dflip'
})
}
}
@Component({ selector: 'post-detail-tab' })
@View({
templateUrl: 'pages/post/detail.html',
directives: [Content]
})
class PostDetail {
constructor(@Parent() nav: NavController) {
this.nav = viewport;
this.title = 'Hello'
}
selectItem() {
this.nav.push(PostDetailTab)
}
}
@Component()
@View({
templateUrl: 'pages/splash.html',
directives: [Content]
})
class SplashPage {
constructor(@Parent() nav: NavController) {
this.nav = nav;
window.nav = nav;
}
}
/**
* Main app entry point
*/
@Component({ selector: 'ion-app' })
@View({
directives: [Nav],
templateUrl: 'main.html'
})
class IonicApp {
constructor() {
this.firstPage = SplashPage//AppPage//LoginPage
setTimeout(() => {
var nav = window.nav;
var route = Router;//new Router()
/*
route.map('login', {
url: '/login',
paramResolver(urlParts) {
return Login(urlParts.id);
}
})
*/
route.on('/login', (data) => {
nav.push(LoginPage, null, {
animate: false
})
})
route.on('/post/:id', (data) => {
console.log('ROUTE: Post page', data)
nav.push(PostDetail, data);
})
route.otherwise('/login');
}, 200);
}
}
export function main() {
bootstrap(IonicApp);
}