From 15ea4947a2911a013b4ba1377088e49bd993a7fa Mon Sep 17 00:00:00 2001 From: insanity Date: Thu, 24 Aug 2017 14:01:43 +0900 Subject: [PATCH] typed history --- src/ts/@overflow/app/config/index.ts | 2 + src/ts/@overflow/app/views/history/List.tsx | 2 +- .../@overflow/history/react/HistoryList.tsx | 11 ++- .../history/react/components/HistoryList.tsx | 77 ++++++++++++++++--- .../action/read_all_by_probe_and_type.ts | 7 ++ .../reducer/read_all_by_probe_and_type.ts | 25 ++++++ .../redux/state/ReadAllByProbeAndType.ts | 14 ++++ .../meta/api/model/MetaHistoryType.ts | 6 +- 8 files changed, 125 insertions(+), 19 deletions(-) create mode 100644 src/ts/@overflow/history/redux/action/read_all_by_probe_and_type.ts create mode 100644 src/ts/@overflow/history/redux/reducer/read_all_by_probe_and_type.ts create mode 100644 src/ts/@overflow/history/redux/state/ReadAllByProbeAndType.ts diff --git a/src/ts/@overflow/app/config/index.ts b/src/ts/@overflow/app/config/index.ts index 4aea2a2..2c785bc 100644 --- a/src/ts/@overflow/app/config/index.ts +++ b/src/ts/@overflow/app/config/index.ts @@ -38,6 +38,7 @@ import MetaSensorItemTypeReadAllReducer from '@overflow/meta/redux/reducer/senso import DiscoveryInfraTargetRegistAllReducer from '@overflow/discovery/redux/reducer/infra_target_regist_all'; import HistoryReadAllByProbeReducer from '@overflow/history/redux/reducer/read_all_by_probe'; +import HistoryReadAllByProbeAndTypeReducer from '@overflow/history/redux/reducer/read_all_by_probe_and_type'; import AsyncRequest from '@overflow/app/redux/saga/AsyncRequest'; @@ -101,6 +102,7 @@ const reduxConfig: ReduxConfig = { modifyProbeReducer, DiscoveryInfraTargetRegistAllReducer, HistoryReadAllByProbeReducer, + HistoryReadAllByProbeAndTypeReducer, ], sagaWatchers: [ AsyncRequest, diff --git a/src/ts/@overflow/app/views/history/List.tsx b/src/ts/@overflow/app/views/history/List.tsx index 639123c..8ba433d 100644 --- a/src/ts/@overflow/app/views/history/List.tsx +++ b/src/ts/@overflow/app/views/history/List.tsx @@ -11,7 +11,7 @@ class HistoryList extends React.Component, object> { public render(): JSX.Element { return (
- +
); } diff --git a/src/ts/@overflow/history/react/HistoryList.tsx b/src/ts/@overflow/history/react/HistoryList.tsx index b6869c6..b6e2574 100644 --- a/src/ts/@overflow/history/react/HistoryList.tsx +++ b/src/ts/@overflow/history/react/HistoryList.tsx @@ -8,11 +8,13 @@ import { import { push as routerPush } from 'react-router-redux'; import * as asyncRequestActions from '@overflow/commons/redux/action/asyncRequest'; import Probe from '@overflow/probe/api/model/Probe'; +import MetaHistoryType from '@overflow/meta/api/model/MetaHistoryType'; import * as readAllByProbeActions from '../redux/action/read_all_by_probe'; +import * as readAllByProbeAndTypeActions from '../redux/action/read_all_by_probe_and_type'; export function mapStateToProps(state: any, ownProps?: any): HistoryStateProps { return { - probeId: '1', + path: ownProps.params, histories: state.historyPage, }; } @@ -23,9 +25,10 @@ export function mapDispatchToProps(dispatch: Dispatch, ownProps?: any): His dispatch(asyncRequestActions.request('HistoryService', 'readAllByProbe', readAllByProbeActions.REQUEST, JSON.stringify(probe), pageNo, countPerPage)); }, - // onRedirectHome: () => { - // dispatch(routerPush('/')); - // }, + onReadAllByProbeAndType: (probe: Probe, type: MetaHistoryType, pageNo: string, countPerPage: string) => { + dispatch(asyncRequestActions.request('HistoryService', 'readAllByProbeAndType', readAllByProbeAndTypeActions.REQUEST, + JSON.stringify(probe), JSON.stringify(type), pageNo, countPerPage)); + }, }; } diff --git a/src/ts/@overflow/history/react/components/HistoryList.tsx b/src/ts/@overflow/history/react/components/HistoryList.tsx index a38b799..bcffc04 100644 --- a/src/ts/@overflow/history/react/components/HistoryList.tsx +++ b/src/ts/@overflow/history/react/components/HistoryList.tsx @@ -4,20 +4,23 @@ import { ListContainer } from '@overflow/commons/react/component/ListContainer'; import Probe from '@overflow/probe/api/model/Probe'; import History from '@overflow/history/api/model/History'; import Page from '@overflow/commons/api/model/Page'; +import MetaHistoryType from '@overflow/meta/api/model/MetaHistoryType'; export interface StateProps { - probeId: string; histories: Page; + path: any; } export interface DispatchProps { onReadAllByProbe?(probe: Probe, pageNo: string, countPerPage: string): void; + onReadAllByProbeAndType?(probe: Probe, type: MetaHistoryType, pageNo: string, countPerPage: string): void; } export type Props = StateProps & DispatchProps; export interface State { page: number; + isTypedHistory: boolean; } export class HistoryList extends React.Component { @@ -28,14 +31,57 @@ export class HistoryList extends React.Component { super(props, context); this.state = { page: 0, + isTypedHistory: false, }; } public componentWillMount(): void { + if (this.props.path === '/histories') { + this.setState({ + isTypedHistory: false, + }); + this.getAllHistory(0); + } else { + this.setState({ + isTypedHistory: true, + }); + this.getTypedHistory(0); + } + } + + public getAllHistory(pageNo: number): void { let probe: Probe = { id: Number(1), }; - this.props.onReadAllByProbe(probe, String(this.state.page), String(this.countPerPage)); + this.props.onReadAllByProbe(probe, String(pageNo), String(this.countPerPage)); + } + + public getTypedHistory(pageNo: number): void { + let probe: Probe = { + id: Number(1), + }; + let type = this.props.path.split('/')[1]; + console.log(type + '!!!!!!!!!'); + this.props.onReadAllByProbeAndType(probe, this.getMetaType(type), String(pageNo), String(this.countPerPage)); + } + + public getMetaType(typeStr: string): MetaHistoryType { + let metaType: MetaHistoryType = { + }; + if (typeStr === 'member') { + metaType.id = 1; + } else if (typeStr === 'probe') { + metaType.id = 2; + } else if (typeStr === 'discovery') { + metaType.id = 3; + } else if (typeStr === 'target') { + metaType.id = 4; + } else if (typeStr === 'crawler') { + metaType.id = 5; + } else if (typeStr === 'sensor') { + metaType.id = 6; + } + return metaType; } public handlePaging = (pageNo: number) => { @@ -48,7 +94,12 @@ export class HistoryList extends React.Component { let probe: Probe = { id: Number(1), }; - this.props.onReadAllByProbe(probe, String(pageNo), String(this.countPerPage)); + if (this.state.isTypedHistory) { + this.getTypedHistory(pageNo); + } else { + // this.props.onReadAllByProbe(probe, String(pageNo), String(this.countPerPage)); + this.getAllHistory(pageNo); + } } public handlePrevPage = (pn: string) => { @@ -64,32 +115,37 @@ export class HistoryList extends React.Component { let probe: Probe = { id: Number(1), }; - this.props.onReadAllByProbe(probe, String(p), String(this.countPerPage)); + if (this.state.isTypedHistory) { + this.getTypedHistory(p); + } else { + this.getAllHistory(p); + } } public renderPagination = (pageObj: Page): (JSX.Element | JSX.Element[]) => { if (pageObj === undefined) { return null; } + let keyIdx = 0; let totalPage = pageObj.totalPages; let currPage = pageObj.number; let elems = new Array; let prevIndicator = pageObj.first ? - : - + : + ; elems.push(prevIndicator); for (let i = 0; i < totalPage; i++) { if (i === currPage) { - elems.push({i + 1}); + elems.push({i + 1}); } else { - elems.push({i + 1}); + elems.push({i + 1}); } } let nextIndicator = pageObj.last ? - : - + : + ; elems.push(nextIndicator); @@ -100,7 +156,6 @@ export class HistoryList extends React.Component { } public render(): JSX.Element { - let historyList: JSX.Element = ( diff --git a/src/ts/@overflow/history/redux/action/read_all_by_probe_and_type.ts b/src/ts/@overflow/history/redux/action/read_all_by_probe_and_type.ts new file mode 100644 index 0000000..37d9941 --- /dev/null +++ b/src/ts/@overflow/history/redux/action/read_all_by_probe_and_type.ts @@ -0,0 +1,7 @@ +export type REQUEST = '@overflow/history/read_all_by_probe_and_type/REQUEST'; +export type REQUEST_SUCCESS = '@overflow/history/read_all_by_probe_and_type/REQUEST/SUCCESS'; +export type REQUEST_FAILURE = '@overflow/history/read_all_by_probe_and_type/REQUEST/FAILURE'; + +export const REQUEST: REQUEST = '@overflow/history/read_all_by_probe_and_type/REQUEST'; +export const REQUEST_SUCCESS: REQUEST_SUCCESS = '@overflow/history/read_all_by_probe_and_type/REQUEST/SUCCESS'; +export const REQUEST_FAILURE: REQUEST_FAILURE = '@overflow/history/read_all_by_probe_and_type/REQUEST/FAILURE'; diff --git a/src/ts/@overflow/history/redux/reducer/read_all_by_probe_and_type.ts b/src/ts/@overflow/history/redux/reducer/read_all_by_probe_and_type.ts new file mode 100644 index 0000000..9963637 --- /dev/null +++ b/src/ts/@overflow/history/redux/reducer/read_all_by_probe_and_type.ts @@ -0,0 +1,25 @@ +import Action from '@overflow/commons/redux/Action'; +import { ReducersMapObject } from 'redux'; +import Probe from '@overflow/probe/api/model/Probe'; +import History from '../../api/model/History'; +import Page from '@overflow/commons/api/model/Page'; +import * as ReadAllByProbeAndTypeActionTypes from '../action/read_all_by_probe_and_type'; +import ReadAllByProbeAndTypeState, { defaultState as ReadAllByProbeAndTypeDefaultState } from '../state/ReadAllByProbeAndType'; + +const reducer: ReducersMapObject = { + [ReadAllByProbeAndTypeActionTypes.REQUEST_SUCCESS]: + (state: ReadAllByProbeAndTypeState = ReadAllByProbeAndTypeDefaultState, action: Action): + ReadAllByProbeAndTypeState => { + return { + ...state, + historyPage: action.payload, + }; + }, + [ReadAllByProbeAndTypeActionTypes.REQUEST_FAILURE]: + (state: ReadAllByProbeAndTypeState = ReadAllByProbeAndTypeDefaultState, action: Action): + ReadAllByProbeAndTypeState => { + return state; + }, +}; + +export default reducer; diff --git a/src/ts/@overflow/history/redux/state/ReadAllByProbeAndType.ts b/src/ts/@overflow/history/redux/state/ReadAllByProbeAndType.ts new file mode 100644 index 0000000..c24fad9 --- /dev/null +++ b/src/ts/@overflow/history/redux/state/ReadAllByProbeAndType.ts @@ -0,0 +1,14 @@ +import History from '../../api/model/History'; +import Page from '@overflow/commons/api/model/Page'; + +export interface State { + readonly historyPage?: Page; + readonly error?: Error; +} + +export const defaultState: State = { + historyPage: undefined, + error: undefined, +}; + +export default State; diff --git a/src/ts/@overflow/meta/api/model/MetaHistoryType.ts b/src/ts/@overflow/meta/api/model/MetaHistoryType.ts index a950f9b..c7fca4b 100644 --- a/src/ts/@overflow/meta/api/model/MetaHistoryType.ts +++ b/src/ts/@overflow/meta/api/model/MetaHistoryType.ts @@ -1,7 +1,7 @@ export interface MetaHistoryType { - id: number; - name: string; - createDate: Date; + id?: number; + name?: string; + createDate?: Date; } export enum MetaHistoryType_ID {