add Storage

This commit is contained in:
Gil Barbara
2015-07-23 23:44:38 -03:00
parent 44662d593f
commit b8e14f4893
6 changed files with 53 additions and 41 deletions
+25 -12
View File
@@ -1,10 +1,11 @@
var React = require('react'),
Isvg = require('react-inlinesvg'),
Header = require('./components/Header'),
Footer = require('./components/Footer'),
Loader = require('./components/Loader'),
Logo = require('./components/Logo'),
json = require('../logos.json');
var React = require('react'),
Isvg = require('react-inlinesvg'),
Storage = require('./utils/Storage'),
Header = require('./components/Header'),
Footer = require('./components/Footer'),
Loader = require('./components/Loader'),
Logo = require('./components/Logo'),
json = require('../logos.json');
var App = React.createClass({
getInitialState () {
@@ -15,6 +16,16 @@ var App = React.createClass({
};
},
componentWillMount: function () {
var category = Storage.getItem('category'),
columns = Storage.getItem('columns');
this.setState({
category: category && this.state.category !== category ? category : this.state.category,
columns: columns && this.state.columns !== columns ? columns : this.state.columns
});
},
componentDidMount: function () {
this
.getDOMNode()
@@ -46,16 +57,18 @@ var App = React.createClass({
console.log(el);
},
_selectCategory (value) {
_changeCategory (value) {
this.setState({
category: value
});
Storage.setItem('category', value);
},
_changeColumns (num) {
this.setState({
columns: num
});
Storage.setItem('columns', num);
},
_filterLogos (tag) {
@@ -63,13 +76,13 @@ var App = React.createClass({
},
render () {
var state = this.state,
var state = this.state,
hidden,
logos = [],
logos = [],
visible = 0;
state.logos.forEach(function (d, i) {
hidden = state.category !== 'anyone' && d.categories.indexOf(state.category) === -1;
hidden = state.category !== 'anyone' && d.categories.indexOf(state.category) === -1;
d.files.forEach(function (f, j) {
logos.push(<Logo key={i + '-' + j} info={d} image={f} hidden={hidden} onClickTag={this._onClickTag}/>);
@@ -86,7 +99,7 @@ var App = React.createClass({
<div className="container">
<Header logos={state.logos} columns={state.columns} visible={visible}
onClickChangeColumns={this._onClickChangeColumns} onClickTag={this._onClickTag}
category={state.category} selectCategory={this._selectCategory}/>
category={state.category} changeCategory={this._changeCategory}/>
<main>
<ul className={'logos col-' + state.columns}>
{logos}
+4 -5
View File
@@ -13,7 +13,7 @@ var Header = React.createClass({
logos: React.PropTypes.array.isRequired,
onClickChangeColumns: React.PropTypes.func.isRequired,
onClickTag: React.PropTypes.func.isRequired,
selectCategory: React.PropTypes.func.isRequired,
changeCategory: React.PropTypes.func.isRequired,
visible: React.PropTypes.number.isRequired
},
@@ -104,16 +104,15 @@ var Header = React.createClass({
_onClickShowCategories (e) {
e.preventDefault();
var el = e.currentTarget;
this._toggleCategoriesMenu();
},
_onClickSelectCategory (e) {
_onClickChangeCategory (e) {
e.preventDefault();
var el = e.currentTarget;
this.props.selectCategory(el.dataset.value);
this.props.changeCategory(el.dataset.value);
this._toggleCategoriesMenu();
},
@@ -158,7 +157,7 @@ var Header = React.createClass({
onClick={this._onClickShowCategories}>{props.category} <Icon id="caret-down"/></a>
<ul className="categories__menu">
{state.categories.map((d, i) => {
return (<li key={i}><a href="#" onClick={this._onClickSelectCategory} data-value={d.key}>{d.key}
return (<li key={i}><a href="#" onClick={this._onClickChangeCategory} data-value={d.key}>{d.key}
{d.key === props.category ? <Icon id="check"/> : ''}</a></li>);
})}
</ul>
+19
View File
@@ -0,0 +1,19 @@
var Storage = {
getItem: function (name) {
return JSON.parse(localStorage.getItem(name));
},
setItem: function (name, value) {
localStorage.setItem(name, JSON.stringify(value));
},
removeItem: function (name) {
localStorage.removeItem(name);
},
clearAll: function () {
localStorage.clear();
}
};
module.exports = Storage;