2016-05-17 17:33:37 +00:00
"use strict" ;
var todo = Syndicate . Struct . makeConstructor ( "todo" , [ "id" , "title" , "completed" ] ) ;
var createTodo = Syndicate . Struct . makeConstructor ( "createTodo" , [ "title" ] ) ;
var setTitle = Syndicate . Struct . makeConstructor ( "setTitle" , [ "id" , "title" ] ) ;
var setCompleted = Syndicate . Struct . makeConstructor ( "setCompleted" , [ "id" , "completed" ] ) ;
var deleteTodo = Syndicate . Struct . makeConstructor ( "deleteTodo" , [ "id" ] ) ;
var clearCompletedTodos = Syndicate . Struct . makeConstructor ( "clearCompletedTodos" , [ ] ) ;
var setAllCompleted = Syndicate . Struct . makeConstructor ( "setAllCompleted" , [ "completed" ] ) ;
// Derived model state
var activeTodoCount = Syndicate . Struct . makeConstructor ( "activeTodoCount" , [ "n" ] ) ;
var completedTodoCount = Syndicate . Struct . makeConstructor ( "completedTodoCount" , [ "n" ] ) ;
var totalTodoCount = Syndicate . Struct . makeConstructor ( "totalTodoCount" , [ "n" ] ) ;
var allCompleted = Syndicate . Struct . makeConstructor ( "allCompleted" , [ ] ) ;
// View state
var show = Syndicate . Struct . makeConstructor ( "show" , [ "completed" ] ) ;
//////////////////////////////////////////////////////////////////////////
function todoListItemModel ( initialId , initialTitle , initialCompleted ) {
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . declareField ( this , "id" , initialId ) ;
Syndicate . Actor . declareField ( this , "title" , initialTitle ) ;
Syndicate . Actor . declareField ( this , "completed" , initialCompleted ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( deleteTodo ( this . id ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : deleteTodo ( this . id ) , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( todo ( this . id , this . title , this . completed ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( setCompleted ( this . id , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : setCompleted ( this . id , ( Syndicate . _$ ( "v" ) ) ) , metalevel : 0 } ; } ) , ( function ( v ) { this . completed = v ; } ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( setAllCompleted ( _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : setAllCompleted ( ( Syndicate . _$ ( "v" ) ) ) , metalevel : 0 } ; } ) , ( function ( v ) { this . completed = v ; } ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( setTitle ( this . id , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : setTitle ( this . id , ( Syndicate . _$ ( "v" ) ) ) , metalevel : 0 } ; } ) , ( function ( v ) { this . title = v ; } ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( clearCompletedTodos ( ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : clearCompletedTodos ( ) , metalevel : 0 } ; } ) , ( function ( ) {
if ( this . completed ) Syndicate . Dataspace . send ( deleteTodo ( this . id ) ) ;
} ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-05-17 17:33:37 +00:00
}
///////////////////////////////////////////////////////////////////////////
var ESCAPE _KEY _CODE = 27 ;
var ENTER _KEY _CODE = 13 ;
function getTemplate ( id ) {
return document . getElementById ( id ) . innerHTML ;
}
function todoListItemView ( id ) {
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( id , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( id , _ , _ ) , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ;
2016-05-17 17:33:37 +00:00
this . ui = new Syndicate . UI . Anchor ( ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . declareField ( this , "editing" , false ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( id , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( id , ( Syndicate . _$ ( "title" ) ) , ( Syndicate . _$ ( "completed" ) ) ) , metalevel : 0 } ; } ) , ( function ( title , completed ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _0 = ( function ( ) { var _ = Syndicate . _ _ ; return todo ( id , title , completed ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( show ( completed ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : show ( completed ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _1 = ( function ( ) { var _ = Syndicate . _ _ ; return show ( completed ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( this . ui . html ( '.todo-list' ,
Mustache . render ( getTemplate ( this . editing
? 'todo-list-item-edit-template'
: 'todo-list-item-view-template' ) ,
{
id : id ,
title : title ,
completed _class : completed ? "completed" : "" ,
checked : completed ? "checked" : "" ,
} ) ,
id ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _1 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _1 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _0 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _0 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( '.toggle' , 'change' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( '.toggle' , 'change' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
Syndicate . Dataspace . send ( setCompleted ( id , e . target . checked ) ) ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( '.destroy' , 'click' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( '.destroy' , 'click' , _ ) , metalevel : 0 } ; } ) , ( function ( ) {
Syndicate . Dataspace . send ( deleteTodo ( id ) ) ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( 'label' , 'dblclick' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( 'label' , 'dblclick' , _ ) , metalevel : 0 } ; } ) , ( function ( ) {
this . editing = true ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( 'input.edit' , 'keyup' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( 'input.edit' , 'keyup' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
if ( e . keyCode === ESCAPE _KEY _CODE || e . keyCode === ENTER _KEY _CODE ) {
2016-05-17 17:33:37 +00:00
this . editing = false ;
2016-08-25 12:13:44 +00:00
}
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( 'input.edit' , 'blur' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( 'input.edit' , 'blur' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
this . editing = false ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( this . ui . event ( 'input.edit' , 'change' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : this . ui . event ( 'input.edit' , 'change' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
var newTitle = e . target . value . trim ( ) ;
Syndicate . Dataspace . send ( ( newTitle ? setTitle ( id , newTitle ) : deleteTodo ( id ) ) ) ;
this . editing = false ;
} ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-05-17 17:33:37 +00:00
}
///////////////////////////////////////////////////////////////////////////
var G = new Syndicate . Ground ( function ( ) {
Syndicate . UI . spawnUIDriver ( ) ;
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . globalEvent ( '.new-todo' , 'change' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . globalEvent ( '.new-todo' , 'change' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
var newTitle = e . target . value . trim ( ) ;
if ( newTitle ) Syndicate . Dataspace . send ( createTodo ( newTitle ) ) ;
e . target . value = "" ;
} ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-08-25 12:13:44 +00:00
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-05-17 17:33:37 +00:00
this . ui = new Syndicate . UI . Anchor ( ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( activeTodoCount ( _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : activeTodoCount ( ( Syndicate . _$ ( "count" ) ) ) , metalevel : 0 } ; } ) , ( function ( count ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _2 = ( function ( ) { var _ = Syndicate . _ _ ; return activeTodoCount ( count ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( this . ui . context ( 'count' ) . html ( '.todo-count strong' , '' + count ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return ( count !== 1 ) ? Syndicate . Patch . assert ( this . ui . context ( 'plural' ) . html ( '.todo-count span.s' , 's' ) , 0 ) : Syndicate . Patch . emptyPatch ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _2 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _2 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( totalTodoCount ( 0 ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : totalTodoCount ( 0 ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _3 = ( function ( ) { var _ = Syndicate . _ _ ; return totalTodoCount ( 0 ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( Syndicate . UI . uiAttribute ( 'section.main' , 'class' , 'hidden' ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( Syndicate . UI . uiAttribute ( 'footer.footer' , 'class' , 'hidden' ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _3 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _3 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( completedTodoCount ( 0 ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : completedTodoCount ( 0 ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _4 = ( function ( ) { var _ = Syndicate . _ _ ; return completedTodoCount ( 0 ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( Syndicate . UI . uiAttribute ( 'button.clear-completed' , 'class' , 'hidden' ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _4 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _4 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . globalEvent ( 'button.clear-completed' , 'click' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . globalEvent ( 'button.clear-completed' , 'click' , _ ) , metalevel : 0 } ; } ) , ( function ( ) {
Syndicate . Dataspace . send ( clearCompletedTodos ( ) ) ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( allCompleted ( ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : allCompleted ( ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _5 = ( function ( ) { var _ = Syndicate . _ _ ; return allCompleted ( ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addInitBlock ( ( function ( ) { Syndicate . Dataspace . send ( Syndicate . UI . setProperty ( '.toggle-all' , 'checked' , true ) ) ; } ) ) ;
Syndicate . Actor . Facet . current . addDoneBlock ( ( function ( ) { Syndicate . Dataspace . send ( Syndicate . UI . setProperty ( '.toggle-all' , 'checked' , false ) ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _5 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _5 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . globalEvent ( '.toggle-all' , 'change' , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . globalEvent ( '.toggle-all' , 'change' , ( Syndicate . _$ ( "e" ) ) ) , metalevel : 0 } ; } ) , ( function ( e ) {
Syndicate . Dataspace . send ( setAllCompleted ( e . target . checked ) ) ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( _ , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( ( Syndicate . _$ ( "id" ) ) , _ , _ ) , metalevel : 0 } ; } ) , ( function ( id ) {
todoListItemView ( id ) ;
} ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-08-25 12:13:44 +00:00
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . declareField ( this , "completedCount" , 0 ) ;
Syndicate . Actor . declareField ( this , "activeCount" , 0 ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( _ , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( ( Syndicate . _$ ( "id" ) ) , _ , ( Syndicate . _$ ( "c" ) ) ) , metalevel : 0 } ; } ) , ( function ( id , c ) { if ( c ) this . completedCount ++ ; else this . activeCount ++ ; } ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( _ , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( ( Syndicate . _$ ( "id" ) ) , _ , ( Syndicate . _$ ( "c" ) ) ) , metalevel : 0 } ; } ) , ( function ( id , c ) { if ( c ) this . completedCount -- ; else this . activeCount -- ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( activeTodoCount ( this . activeCount ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( completedTodoCount ( this . completedCount ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( totalTodoCount ( this . activeCount + this . completedCount ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return ( this . completedCount > 0 && this . activeCount === 0 ) ? Syndicate . Patch . assert ( allCompleted ( ) , 0 ) : Syndicate . Patch . emptyPatch ; } ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-08-25 12:13:44 +00:00
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . locationHash ( _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . locationHash ( ( Syndicate . _$ ( "hash" ) ) ) , metalevel : 0 } ; } ) , ( function ( hash ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _6 = ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . UI . locationHash ( hash ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( Syndicate . UI . uiAttribute ( 'ul.filters > li > a[href="#' + hash + '"]' ,
'class' , 'selected' ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _6 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _6 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . locationHash ( '/' ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . locationHash ( '/' ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _7 = ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . UI . locationHash ( '/' ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( show ( true ) , 0 ) ; } ) ) ;
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( show ( false ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _7 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _7 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . locationHash ( '/active' ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . locationHash ( '/active' ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _8 = ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . UI . locationHash ( '/active' ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( show ( false ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _8 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _8 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . UI . locationHash ( '/completed' ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . UI . locationHash ( '/completed' ) , metalevel : 0 } ; } ) , ( function ( ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _9 = ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . UI . locationHash ( '/completed' ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addAssertion ( ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . assert ( show ( true ) , 0 ) ; } ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _9 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _9 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-08-25 12:13:44 +00:00
2017-02-20 22:19:56 +00:00
Syndicate . Actor . spawnActor ( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-05-17 17:33:37 +00:00
var db ;
if ( 'todos-syndicate' in localStorage ) {
db = JSON . parse ( localStorage [ 'todos-syndicate' ] ) ;
for ( var i in db . todos ) {
var t = db . todos [ i ] ;
todoListItemModel ( t . id , t . title , t . completed ) ;
}
} else {
db = { nextId : 0 , todos : { } } ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addInitBlock ( ( function ( ) {
2017-02-20 22:19:56 +00:00
( function ( ) { Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( Syndicate . observe ( createTodo ( _ ) ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : Syndicate . observe ( createTodo ( _ ) ) , metalevel : 0 } ; } ) , ( function ( ) {
Syndicate . Dataspace . send ( createTodo ( 'Buy milk' ) ) ;
Syndicate . Dataspace . send ( createTodo ( 'Buy bread' ) ) ;
Syndicate . Dataspace . send ( createTodo ( 'Finish PhD' ) ) ;
} ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) . call ( this ) ;
2016-08-25 12:13:44 +00:00
} ) ) ;
2016-05-17 17:33:37 +00:00
}
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "message" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( createTodo ( _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : createTodo ( ( Syndicate . _$ ( "title" ) ) ) , metalevel : 0 } ; } ) , ( function ( title ) {
todoListItemModel ( db . nextId ++ , title , false ) ;
} ) ) ;
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( _ , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( ( Syndicate . _$ ( "id" ) ) , _ , _ ) , metalevel : 0 } ; } ) , ( function ( id ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _10 = ( function ( ) { var _ = Syndicate . _ _ ; return todo ( id , _ , _ ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , false , "asserted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( todo ( id , _ , _ ) , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : todo ( id , ( Syndicate . _$ ( "title" ) ) , ( Syndicate . _$ ( "completed" ) ) ) , metalevel : 0 } ; } ) , ( function ( title , completed ) {
2018-03-27 09:25:20 +00:00
var _cachedAssertion1522142579558 _11 = ( function ( ) { var _ = Syndicate . _ _ ; return todo ( id , title , completed ) ; } ) . call ( this ) ;
2017-02-20 22:19:56 +00:00
{ Syndicate . Actor . Facet . build ( function ( ) { {
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addInitBlock ( ( function ( ) {
db . todos [ id ] = { id : id , title : title , completed : completed } ;
2016-05-17 17:33:37 +00:00
localStorage [ 'todos-syndicate' ] = JSON . stringify ( db ) ;
2016-08-25 12:13:44 +00:00
} ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _11 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _11 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2016-08-25 12:13:44 +00:00
Syndicate . Actor . Facet . current . addDoneBlock ( ( function ( ) {
delete db . todos [ id ] ;
localStorage [ 'todos-syndicate' ] = JSON . stringify ( db ) ;
} ) ) ;
}
2018-03-27 09:25:20 +00:00
Syndicate . Actor . Facet . current . onEvent ( Syndicate . Actor . PRIORITY _NORMAL , true , "retracted" , ( function ( ) { var _ = Syndicate . _ _ ; return Syndicate . Patch . sub ( _cachedAssertion1522142579558 _10 , 0 ) ; } ) , ( function ( ) { var _ = Syndicate . _ _ ; return { assertion : _cachedAssertion1522142579558 _10 , metalevel : 0 } ; } ) , ( function ( ) { } ) ) ; } ) ; } } ) ) ;
2017-02-20 22:19:56 +00:00
} } ) ; } ) ;
2016-05-17 17:33:37 +00:00
} ) . startStepping ( ) ;