ing
This commit is contained in:
parent
41597d406d
commit
ffb65a75f4
|
@ -2,12 +2,14 @@ import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
|
|||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||
import { Store, select } from '@ngrx/store';
|
||||
import { Member } from '@overflow/commons-typescript/model/member';
|
||||
|
||||
@Component({
|
||||
selector: 'of-member-signin',
|
||||
templateUrl: './member-signin.component.html',
|
||||
})
|
||||
export class MemberSigninComponent implements OnInit {
|
||||
@Input() member: Member;
|
||||
@Input() signinError: string;
|
||||
@Output() resetPassword = new EventEmitter();
|
||||
@Output() signup = new EventEmitter();
|
||||
|
|
|
@ -1 +1,5 @@
|
|||
<of-member-signin (signin)="onSignin($event)"></of-member-signin>
|
||||
<of-member-signin
|
||||
[member]="member$ | async"
|
||||
(signin)="onSignin($event)"
|
||||
>
|
||||
</of-member-signin>
|
||||
|
|
|
@ -7,6 +7,7 @@ import { Observable } from 'rxjs';
|
|||
import { MemberSigninContainerSelector } from '../store';
|
||||
|
||||
import * as MemberEntityStore from '../store/entity/member';
|
||||
import { Member } from '@overflow/commons-typescript/model/member';
|
||||
|
||||
@Component({
|
||||
selector: 'of-member-signin-container',
|
||||
|
@ -14,6 +15,7 @@ import * as MemberEntityStore from '../store/entity/member';
|
|||
})
|
||||
export class MemberSigninContainerComponent implements OnInit {
|
||||
@Input() returnURL: string;
|
||||
member$: Observable<Member>;
|
||||
pending$: Observable<boolean>;
|
||||
error$: Observable<any>;
|
||||
|
||||
|
@ -23,6 +25,7 @@ export class MemberSigninContainerComponent implements OnInit {
|
|||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.member$ = this.store.pipe(select(MemberSigninContainerSelector.selectMember));
|
||||
this.pending$ = this.store.pipe(select(MemberSigninContainerSelector.selectPending));
|
||||
this.error$ = this.store.pipe(select(MemberSigninContainerSelector.selectError));
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ export function reducer(state: State = initialState, action: MemberActions | Aut
|
|||
switch (action.type) {
|
||||
case MemberActionType.Signin: {
|
||||
return {
|
||||
member: null,
|
||||
pending: true,
|
||||
error: null,
|
||||
};
|
||||
|
@ -25,6 +26,7 @@ export function reducer(state: State = initialState, action: MemberActions | Aut
|
|||
|
||||
case AuthActionType.SigninSuccess: {
|
||||
return {
|
||||
member: action.payload.domainMember.member,
|
||||
pending: false,
|
||||
error: null,
|
||||
};
|
||||
|
@ -32,6 +34,7 @@ export function reducer(state: State = initialState, action: MemberActions | Aut
|
|||
|
||||
case AuthActionType.SigninFailure: {
|
||||
return {
|
||||
member: null,
|
||||
pending: false,
|
||||
error: action.payload,
|
||||
};
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
import { Selector, createSelector } from '@ngrx/store';
|
||||
|
||||
import { RESTClientError } from '@loafer/ng-rest';
|
||||
import { Member } from '@overflow/commons-typescript/model/member';
|
||||
|
||||
export interface State {
|
||||
member: Member;
|
||||
pending: boolean;
|
||||
error: RESTClientError;
|
||||
}
|
||||
|
||||
export const initialState: State = {
|
||||
member: null,
|
||||
pending: false,
|
||||
error: null,
|
||||
};
|
||||
|
||||
export function getSelectors(selector: Selector<any, State>) {
|
||||
return {
|
||||
selectMember: createSelector(selector, (state: State) => state.member),
|
||||
selectPending: createSelector(selector, (state: State) => state.pending),
|
||||
selectError: createSelector(selector, (state: State) => state.error),
|
||||
};
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<table class="login-table">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="login-panel ui-fluid">
|
||||
<div class="ui-g">
|
||||
<div class="ui-g-12">
|
||||
<img src="assets/layout/images/login/login_img_01.png">
|
||||
<p><br>
|
||||
overFlow는 여러분의 서버에 발생하는<br>
|
||||
변화를 항상 지켜보고 있습니다.<br><br>
|
||||
|
||||
서버에 발생하는 모든 변화를 세분화 하여<br>
|
||||
실시간으로 알려 드립니다.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -0,0 +1,21 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { trigger, state, transition, style, animate } from '@angular/animations';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { select, Store } from '@ngrx/store';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'of-site-banner-container',
|
||||
templateUrl: './app.banner.component.html',
|
||||
})
|
||||
export class AppBannerComponent implements OnInit {
|
||||
|
||||
constructor(
|
||||
private store: Store<any>,
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ import { AppFooterComponent } from '../commons/component/layout/footer/app.foote
|
|||
import { AppBreadcrumbComponent } from '../commons/component/layout/breadcrumb/app.breadcrumb.component';
|
||||
import { AppRightpanelComponent } from '../commons/component/layout/right-panel/app.rightpanel.component';
|
||||
import { AppInlineProfileComponent } from '../commons/component/layout/profile/app.profile.component';
|
||||
import { AppBannerComponent } from '../commons/component/layout/banner/app.banner.component';
|
||||
import { BreadcrumbService } from '../commons/service/breadcrumb.service';
|
||||
import {
|
||||
LocalizationModule,
|
||||
|
@ -38,6 +39,7 @@ import { NotificationModule } from '@overflow/notification/notification.module';
|
|||
AppBreadcrumbComponent,
|
||||
AppRightpanelComponent,
|
||||
AppInlineProfileComponent,
|
||||
AppBannerComponent,
|
||||
],
|
||||
providers: [
|
||||
{ provide: LocationStrategy, useClass: HashLocationStrategy },
|
||||
|
|
Loading…
Reference in New Issue
Block a user