typed history
This commit is contained in:
parent
2455762d14
commit
15ea4947a2
|
@ -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,
|
||||
|
|
|
@ -11,7 +11,7 @@ class HistoryList extends React.Component<RouteComponentProps<object>, object> {
|
|||
public render(): JSX.Element {
|
||||
return (
|
||||
<div>
|
||||
<HistoryListContainer />
|
||||
<HistoryListContainer params={this.props.match.path}/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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<any>, 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));
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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<Props, State> {
|
||||
|
@ -28,14 +31,57 @@ export class HistoryList extends React.Component<Props, State> {
|
|||
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<Props, State> {
|
|||
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<Props, State> {
|
|||
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 ?
|
||||
<Menu.Item as='a' icon disabled><Icon name='left chevron' /></Menu.Item> :
|
||||
<Menu.Item as='a' icon onClick={this.handlePrevPage.bind(this, 'P')}>
|
||||
<Menu.Item as='a' key={keyIdx} icon disabled><Icon name='left chevron' /></Menu.Item> :
|
||||
<Menu.Item as='a' key={keyIdx} icon onClick={this.handlePrevPage.bind(this, 'P')}>
|
||||
<Icon name='left chevron' />
|
||||
</Menu.Item>;
|
||||
elems.push(prevIndicator);
|
||||
for (let i = 0; i < totalPage; i++) {
|
||||
if (i === currPage) {
|
||||
elems.push(<Menu.Item key={i} active as='a' onClick={this.handlePaging.bind(this, i)}><b>{i + 1}</b></Menu.Item>);
|
||||
elems.push(<Menu.Item key={++keyIdx} active as='a' onClick={this.handlePaging.bind(this, i)}><b>{i + 1}</b></Menu.Item>);
|
||||
} else {
|
||||
elems.push(<Menu.Item key={i} as='a' onClick={this.handlePaging.bind(this, i)}>{i + 1}</Menu.Item>);
|
||||
elems.push(<Menu.Item key={++keyIdx} as='a' onClick={this.handlePaging.bind(this, i)}>{i + 1}</Menu.Item>);
|
||||
}
|
||||
}
|
||||
let nextIndicator = pageObj.last ?
|
||||
<Menu.Item as='a' icon disabled><Icon name='right chevron' /></Menu.Item> :
|
||||
<Menu.Item as='a' icon onClick={this.handlePrevPage.bind(this, 'N')}>
|
||||
<Menu.Item as='a' key={++keyIdx} icon disabled><Icon name='right chevron' /></Menu.Item> :
|
||||
<Menu.Item as='a' key={++keyIdx} icon onClick={this.handlePrevPage.bind(this, 'N')}>
|
||||
<Icon name='right chevron' />
|
||||
</Menu.Item>;
|
||||
elems.push(nextIndicator);
|
||||
|
@ -100,7 +156,6 @@ export class HistoryList extends React.Component<Props, State> {
|
|||
}
|
||||
|
||||
public render(): JSX.Element {
|
||||
|
||||
let historyList: JSX.Element = (
|
||||
<Container fluid>
|
||||
<Table celled selectable striped>
|
||||
|
|
|
@ -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';
|
|
@ -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<Page>):
|
||||
ReadAllByProbeAndTypeState => {
|
||||
return {
|
||||
...state,
|
||||
historyPage: <Page>action.payload,
|
||||
};
|
||||
},
|
||||
[ReadAllByProbeAndTypeActionTypes.REQUEST_FAILURE]:
|
||||
(state: ReadAllByProbeAndTypeState = ReadAllByProbeAndTypeDefaultState, action: Action<Error>):
|
||||
ReadAllByProbeAndTypeState => {
|
||||
return state;
|
||||
},
|
||||
};
|
||||
|
||||
export default reducer;
|
|
@ -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;
|
|
@ -1,7 +1,7 @@
|
|||
export interface MetaHistoryType {
|
||||
id: number;
|
||||
name: string;
|
||||
createDate: Date;
|
||||
id?: number;
|
||||
name?: string;
|
||||
createDate?: Date;
|
||||
}
|
||||
|
||||
export enum MetaHistoryType_ID {
|
||||
|
|
Loading…
Reference in New Issue
Block a user