Exemplo n.º 1
0
AppDispatcher.register((payload) => {

    const action = payload.action;

    switch (action.type) {
        case TodoConstants.UPDATE_TEXT:
            Store.inputText = action.text;
            Store.emitChange();
            break;
        case TodoConstants.ADD_TODO:
            debug('Adding Todo', Store._todos, Store._inputText);
            Store.addTodo();
            Store.emitChange();
            break;
        case TodoConstants.TOGGLE_ARCHIVE:
            debug('Toggling Archive Status: ', action.todo, action.index);
            Store._todos[action.index].archived = !Store._todos[action.index].archived;
            Store.emitChange();
            break;
        case TodoConstants.TOGGLE_ALL:
            debug('Toggling All');
            Store.toggleAll();
            Store.emitChange();
            break;
        case TodoConstants.REMOVE_TODO:
            debug('Removing Todo: ', action.index);
            Store._todos.splice(action.index, 1);
            Store.emitChange();
            break;
        case TodoConstants.REMOVE_ALL:
            debug('Removing All Todos');
            Store._todos.length = 0;
            Store.emitChange();
            break;
        case TodoConstants.REMOVE_ARCHIVED:
            debug('Removing Archived Todos');
            Store._todos = Store._todos.filter((todo) => {
                return todo.archived === false;
            });
            Store.emitChange();
            break;
        case TodoConstants.POPULATE_DATA:
            debug('Populating data: ', action.data);
            Store._todos = action.data;
            Store.emitChange();
            break;
        default:
            break;
    }

});
Exemplo n.º 2
0
 removeArchived(event) {
     debug('RemoveArchived called', event);
     event.preventDefault();
     this.props.removeArchived();
 }
Exemplo n.º 3
0
'use strict';

import React from 'react/addons';
import {Link} from 'react-router';
import debug from 'constants/DebugConstants';

import 'styles/TodoNav.scss';
debug('Loading %s...', 'TodoNav');

export default class TodoNav extends React.Component {
    static propTypes = {};
    static defaultProps = {};


    removeAll(event) {
        event.preventDefault();
        this.props.removeAll();
    }

    removeArchived(event) {
        debug('RemoveArchived called', event);
        event.preventDefault();
        this.props.removeArchived();
    }

    render() {
        return (
            <ul className="nav nav-pills TodoNav">
                <li role="presentation"
                    className={this.props.filter === 'all' ? 'active':''}>
                    <Link to="all">All</Link>
Exemplo n.º 4
0
 this._todos = this._todos.map((todo) => {
     debug(todo);
     todo.archived = !allAreArchived;
     return todo;
 });
Exemplo n.º 5
0
'use strict';
import {EventEmitter} from 'events';

import AppDispatcher from 'dispatcher/AppDispatcher';
import TodoConstants from 'constants/TodoConstants';
import debug from 'constants/DebugConstants';

debug('Loading %s...', 'TodoStore');
const CHANGE_EVENT = 'CHANGE_EVENT';

class TodoStore extends EventEmitter {
    _todos = [];
    _inputText;

    getState() {
        return {
            todos: this._todos,
            inputText: this._inputText,
            allAreArchived: this.allAreArchived
        };
    }

    get allAreArchived() {
        return this._todos.every((todo) => {
            return todo.archived;
        });
    }

    set inputText(value) {
        this._inputText = value;
    }
Exemplo n.º 6
0
'use strict';

import React from 'react/addons';
import classNames from 'classnames';

import TodoItem from 'components/TodoItem';
import debug from 'constants/DebugConstants';

import 'styles/TodoList.scss';
debug('Loading %s...', 'TodoList');


export default class TodoList extends React.Component {
    static defaultProps = {
        filter: 'all',
        todos: []
    };
    filteredTodos = () => {
        let returnAll = this.props.filter === 'all';
        let archiveFilter = this.props.filter === 'archived';

        return this.props.todos.filter((todo) => {
            if (returnAll) return true;

            return todo.archived === archiveFilter;
        })
    };

    render() {
        let todosList = this.filteredTodos();