| Index: samples/todomvc/todomvc_impl.dart
|
| diff --git a/samples/todomvc/todomvc_impl.dart b/samples/todomvc/todomvc_impl.dart
|
| deleted file mode 100644
|
| index c0ae572d5853b78a66902664effe76b02d3eb711..0000000000000000000000000000000000000000
|
| --- a/samples/todomvc/todomvc_impl.dart
|
| +++ /dev/null
|
| @@ -1,99 +0,0 @@
|
| -// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE.md file.
|
| -
|
| -import 'model.dart';
|
| -import 'dart/todomvc_presenter.dart';
|
| -import 'dart/todomvc_presenter_model.dart';
|
| -
|
| -import 'dart/presentation_graph.dart' as node;
|
| -
|
| -class ItemPair {
|
| - final Item item;
|
| - final Immutable presentation;
|
| - ItemPair(this.item, this.presentation);
|
| -}
|
| -
|
| -class TodoMVCImpl extends TodoMVCPresenter {
|
| -
|
| - Model _model = new Model();
|
| -
|
| - TodoMVCImpl() {
|
| - _model.createItem("My default todo");
|
| - _model.createItem("Some other todo");
|
| - }
|
| -
|
| - void createItem(title) {
|
| - _model.createItem(title.str);
|
| - }
|
| -
|
| - void clearItems() {
|
| - _model.clearItems();
|
| - }
|
| -
|
| - // Cache of previously drawn items.
|
| - // TODO(zerny): use a map once we have a proper implementation.
|
| - List<ItemPair> _cachePrevious = new List();
|
| - List<ItemPair> _cacheCurrent = new List();
|
| -
|
| - Immutable _lookup(Item item, int index) {
|
| - // Look for a cached item in the range [index; index + 1]
|
| - for (var i = 0; i < 2; ++i) {
|
| - var j = index + i;
|
| - if (j >= _cachePrevious.length) return null;
|
| - ItemPair cached = _cachePrevious[j];
|
| - if (cached.item == item) return cached.presentation;
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - void _add(int index, Item item, Immutable presentation) {
|
| - _cacheCurrent[index] = new ItemPair(item, presentation);
|
| - }
|
| -
|
| - Immutable render(previous) {
|
| - // Swap previous and current cache and resize current to model-item count.
|
| - var tmp = _cachePrevious;
|
| - tmp.length = _model.todos.length;
|
| - _cachePrevious = _cacheCurrent;
|
| - _cacheCurrent = tmp;
|
| - return _renderList(0, previous);
|
| - }
|
| -
|
| - Immutable _renderList(int index, Immutable previous) =>
|
| - (index == _model.todos.length)
|
| - ? node.nil(previous)
|
| - : node.cons(
|
| - _renderItemFromCache(index, node.getConsFst(previous)),
|
| - _renderList(index + 1, node.getConsSnd(previous)),
|
| - null,
|
| - null,
|
| - null,
|
| - previous);
|
| -
|
| - Immutable _renderItemFromCache(int index, Immutable previous) {
|
| - Item item = _model.todos[index];
|
| - Cons cached = _lookup(item, index);
|
| - Immutable current = (cached == null)
|
| - ? _renderItem(item, previous)
|
| - : node.cons(
|
| - node.str(item.title, cached.fst),
|
| - node.truth(item.done, cached.snd),
|
| - // Reuse the handlers since we know that item is the same as the
|
| - // item used for the creating the cached handlers.
|
| - cached.deleteEvent,
|
| - cached.completeEvent,
|
| - cached.uncompleteEvent,
|
| - cached);
|
| - _add(index, item, current);
|
| - return current;
|
| - }
|
| -
|
| - Immutable _renderItem(Item item, Immutable previous) =>
|
| - node.cons(
|
| - node.str(item.title, node.getConsFst(previous)),
|
| - node.truth(item.done, node.getConsSnd(previous)),
|
| - new EventHandler(() { _model.todos.remove(item); }),
|
| - new EventHandler(item.complete),
|
| - new EventHandler(item.uncomplete));
|
| -}
|
|
|