From 4c519d1d8b37669933a2fa4815ac069d54fce0e0 Mon Sep 17 00:00:00 2001 From: omiceron Date: Sun, 28 Jan 2018 23:41:36 +0500 Subject: [PATCH 01/14] HT4.1 - Store completed --- src/AC/index.js | 16 +++++++++++++- src/components/App.js | 1 + src/components/Article/index.js | 2 +- src/components/Filters/DateRange.js | 33 ++++++++++++++++++++++++++--- src/components/Filters/Select.js | 17 ++++++++++----- src/components/Filters/index.js | 11 ++++++++-- src/constants/index.js | 5 +++-- src/reducer/articles.js | 1 + src/reducer/filters.js | 23 ++++++++++++++++++++ src/reducer/index.js | 8 ++++--- src/store/index.js | 2 +- 11 files changed, 101 insertions(+), 18 deletions(-) create mode 100644 src/reducer/filters.js diff --git a/src/AC/index.js b/src/AC/index.js index 6b623b4..5e8b16f 100644 --- a/src/AC/index.js +++ b/src/AC/index.js @@ -1,4 +1,4 @@ -import {INCREMENT, DELETE_ARTICLE} from '../constants' +import {INCREMENT, DELETE_ARTICLE, FILTER_DATERANGE, FILTER_SELECT} from '../constants' export function increment() { return { @@ -11,4 +11,18 @@ export function deleteArticle(id) { type: DELETE_ARTICLE, payload: { id } } +} + +export function filterDateRange({from, to}) { + return { + type: FILTER_DATERANGE, + payload: { from, to } + } +} + +export function filterSelect(selected) { + return { + type: FILTER_SELECT, + payload: { selected } + } } \ No newline at end of file diff --git a/src/components/App.js b/src/components/App.js index 7fc1ed4..6842c60 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -4,6 +4,7 @@ import UserForm from './UserForm' import Filters from './Filters' import Counter from './Counter' + class App extends Component { render() { return ( diff --git a/src/components/Article/index.js b/src/components/Article/index.js index c5a5791..08010ef 100644 --- a/src/components/Article/index.js +++ b/src/components/Article/index.js @@ -63,7 +63,7 @@ class Article extends PureComponent { } handleDelete = () => { - const {deleteArticle,article} = this.props + const {deleteArticle, article} = this.props deleteArticle(article.id) } diff --git a/src/components/Filters/DateRange.js b/src/components/Filters/DateRange.js index 7f1fdb9..8823b99 100644 --- a/src/components/Filters/DateRange.js +++ b/src/components/Filters/DateRange.js @@ -1,18 +1,36 @@ import React, { Component } from 'react' import DayPicker, { DateUtils } from 'react-day-picker' +import {connect} from 'react-redux' +import {filterDateRange} from '../../AC' +import Article from '../Article' import 'react-day-picker/lib/style.css' class DateRange extends Component { +/* state = { from: null, to: null } +*/ - handleDayClick = (day) => this.setState(DateUtils.addDayToRange(day, this.state)) +// handleDayClick = (day) => this.setState(DateUtils.addDayToRange(day, this.state)) + + handleDayClick = (day) => { + + console.log('handleclick', this.props) + const {filterDateRange} = this.props + filterDateRange(DateUtils.addDayToRange(day, this.props)) + } + +/* handleDayClick = () => { + const {filterDateRange, range} = this.props + filterDateRange(range) + }*/ render() { - const { from, to } = this.state +// const { from, to } = this.state + const { from, to } = this.props const selectedRange = from && to && `${from.toDateString()} - ${to.toDateString()}` return (
@@ -26,5 +44,14 @@ class DateRange extends Component { } } +/* + +const mapStateToProps = (storeState) => ({ + range: storeState.filters +}) + +export default connect(mapStateToProps)(DateRange) +*/ + -export default DateRange \ No newline at end of file +export default connect(null, { filterDateRange })(DateRange) diff --git a/src/components/Filters/Select.js b/src/components/Filters/Select.js index 018dd1d..20fbdc0 100644 --- a/src/components/Filters/Select.js +++ b/src/components/Filters/Select.js @@ -1,6 +1,8 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import Select from 'react-select' +import {connect} from 'react-redux' +import {filterSelect} from '../../AC' import 'react-select/dist/react-select.css' @@ -9,11 +11,16 @@ class SelectFilter extends Component { articles: PropTypes.array.isRequired }; - state = { +/* state = { selected: null - } + }*/ + + //handleChange = selected => (console.log(selected), this.setState({ selected })) - handleChange = selected => this.setState({ selected }) + handleChange = () => { + const {selectArticles, selected} = this.props + selectArticles(selected) + } render() { const { articles } = this.props @@ -24,11 +31,11 @@ class SelectFilter extends Component { return