From 41aea41aaff0886fd6c211f03db2b54863a97165 Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Thu, 21 Jan 2016 13:48:06 +0100 Subject: filters are working ! --- package.json | 2 ++ src/web/js/actions/MenuActions.js | 4 +++- src/web/js/actions/MiddlePanelActions.js | 3 ++- src/web/js/components/MiddlePanel.react.js | 29 +++++++++++------------------ src/web/js/stores/MiddlePanelStore.js | 17 ++++++++++++++++- src/web/templates/home2.html | 2 -- src/web/templates/layout.html | 5 ----- src/web/views/views.py | 3 ++- 8 files changed, 36 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index a55a1daa..e9c12b31 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,10 @@ "repository": "https://github.com/JARR-aggregator/JARR", "main": "src/web/js/app.js", "dependencies": { + "bootstrap": "^3.3.6", "classnames": "^2.1.3", "flux": "^2.0.1", + "jquery": "^2.2.0", "keymirror": "~0.1.0", "object-assign": "^1.0.0", "react": "^0.12.0" diff --git a/src/web/js/actions/MenuActions.js b/src/web/js/actions/MenuActions.js index ce3a1030..f02ea5a0 100644 --- a/src/web/js/actions/MenuActions.js +++ b/src/web/js/actions/MenuActions.js @@ -1,11 +1,13 @@ var JarrDispatcher = require('../dispatcher/JarrDispatcher'); var MenuActionTypes = require('../constants/JarrConstants').MenuActionTypes; +var jquery = require('jquery'); + var MenuActions = { // PARENT FILTERS reload: function() { - $.getJSON('/menu', function(payload) { + jquery.getJSON('/menu', function(payload) { JarrDispatcher.dispatch({ type: MenuActionTypes.RELOAD_MENU, categories: payload.categories, diff --git a/src/web/js/actions/MiddlePanelActions.js b/src/web/js/actions/MiddlePanelActions.js index 9877d0d5..42c18b58 100644 --- a/src/web/js/actions/MiddlePanelActions.js +++ b/src/web/js/actions/MiddlePanelActions.js @@ -1,10 +1,11 @@ var JarrDispatcher = require('../dispatcher/JarrDispatcher'); var MiddlePanelActionTypes = require('../constants/JarrConstants').MiddlePanelActionTypes; +var jquery = require('jquery'); var MiddlePanelActions = { reload: function() { - $.getJSON('/middle_panel', function(payload) { + jquery.getJSON('/middle_panel', function(payload) { JarrDispatcher.dispatch({ type: MiddlePanelActionTypes.RELOAD_MIDDLE_PANEL, articles: payload.articles, diff --git a/src/web/js/components/MiddlePanel.react.js b/src/web/js/components/MiddlePanel.react.js index 51d582c0..c5a9c3f9 100644 --- a/src/web/js/components/MiddlePanel.react.js +++ b/src/web/js/components/MiddlePanel.react.js @@ -50,10 +50,8 @@ var TableLine = React.createClass({ }); var TableBody = React.createClass({ - propTypes: {articles: React.PropTypes.array.isRequired, - }, getInitialState: function() { - return {articles: this.props.articles, + return {articles: [], }; }, render: function() { @@ -73,19 +71,6 @@ var TableBody = React.createClass({ ); - } -}); - -var MiddlePanel = React.createClass({ - getInitialState: function() { - return {articles: []}; - }, - render: function() { - var body = null; - if(this.state.articles.length) { - body = (); - } - return (
{body}
); }, componentDidMount: function() { MiddlePanelActions.reload(); @@ -95,8 +80,16 @@ var MiddlePanel = React.createClass({ MiddlePanelStore.removeChangeListener(this._onChange); }, _onChange: function() { - var datas = MiddlePanelStore.getAll(); - this.setState({articles: datas.articles}); + this.setState({articles: MiddlePanelStore.getArticles()}); + }, +}); + +var MiddlePanel = React.createClass({ + render: function() { + return (
+ +
+ ); }, }); diff --git a/src/web/js/stores/MiddlePanelStore.js b/src/web/js/stores/MiddlePanelStore.js index d5744e20..4e6e04c4 100644 --- a/src/web/js/stores/MiddlePanelStore.js +++ b/src/web/js/stores/MiddlePanelStore.js @@ -11,6 +11,21 @@ var MiddlePanelStore = assign({}, EventEmitter.prototype, { getAll: function() { return this._datas; }, + getArticles: function() { + var articles = []; + var key = null; + var id = null; + if (this._datas.parent_filter_type) { + key = this._datas.parent_filter_type + '_id'; + id = this._datas.parent_filter_id; + } + this._datas.articles.map(function(article) { + if(!key || article[key] == id) { + articles.push(article); + } + }); + return articles; + }, setFilter: function(value) { if(this._datas.filter != value) { this._datas.filter = value; @@ -46,7 +61,7 @@ MiddlePanelStore.dispatchToken = JarrDispatcher.register(function(action) { // PARENT FILTER case MiddlePanelActionTypes.MIDDLE_PANEL_PARENT_FILTER: MiddlePanelStore.setParentFilter(action.parent_type, - action.filter_id); + action.parent_id); break; // FILTER case MiddlePanelActionTypes.MIDDLE_PANEL_FILTER_ALL: diff --git a/src/web/templates/home2.html b/src/web/templates/home2.html index 54413b35..3e9d4a6f 100644 --- a/src/web/templates/home2.html +++ b/src/web/templates/home2.html @@ -1,8 +1,6 @@ {% extends "layout.html" %} {% block content %}
- - {% endblock %} diff --git a/src/web/templates/layout.html b/src/web/templates/layout.html index db5b6589..0b2f371d 100644 --- a/src/web/templates/layout.html +++ b/src/web/templates/layout.html @@ -140,10 +140,5 @@ {% block content %}{% endblock %} - - - - - diff --git a/src/web/views/views.py b/src/web/views/views.py index b29ef645..ae3d9b01 100644 --- a/src/web/views/views.py +++ b/src/web/views/views.py @@ -263,9 +263,10 @@ def get_menu(): @login_required def get_middle_panel(): fd_hash = {fd.id: fd for fd in FeedController(g.user.id).read()} - articles = ArticleController(g.user.id).read(readed=False) + articles = ArticleController(g.user.id).read(readed=False).order_by('date') return jsonify(**{'articles': [{'title': art.title, 'liked': art.like, 'read': art.readed, 'article_id': art.id, + 'feed_id': art.feed_id, 'category_id': art.category_id or 0, 'feed_title': fd_hash[art.feed_id].title, 'icon_url': url_for('icon.icon', url=fd_hash[art.feed_id].icon_url) if fd_hash[art.feed_id].icon_url else None, -- cgit