The Big Spawn/Actor Swap
This commit is contained in:
parent
186be084fd
commit
86b82b57cb
|
@ -1,5 +1,5 @@
|
|||
```javascript
|
||||
actor {
|
||||
spawn {
|
||||
field this.balance = 0;
|
||||
assert account(this.balance);
|
||||
on message deposit($amount) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
```javascript
|
||||
actor {
|
||||
spawn {
|
||||
on asserted account($balance) {
|
||||
console.log("Balance:",
|
||||
balance);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
```racket
|
||||
(actor
|
||||
(spawn
|
||||
(field [balance 0])
|
||||
(assert (account (balance)))
|
||||
(on (message (deposit $amount))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
```racket
|
||||
(actor
|
||||
(spawn
|
||||
(on (asserted (account $balance))
|
||||
(printf "Balance: ~a\n"
|
||||
balance)))
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,12 +2,12 @@
|
|||
new Syndicate.Ground(function () {
|
||||
Syndicate.UI.spawnUIDriver();
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
Syndicate.Actor.declareField(this, "counter", 0);
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(ui.html('#button-label', '' + this.counter), 0); }));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.globalEvent('#counter', 'click', _), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.globalEvent('#counter', 'click', _), metalevel: 0 }; }), (function() {
|
||||
this.counter++;
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}).startStepping();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
ground dataspace {
|
||||
Syndicate.UI.spawnUIDriver();
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
field this.counter = 0;
|
||||
assert ui.html('#button-label', '' + this.counter);
|
||||
|
|
|
@ -15,7 +15,7 @@ function spawnChatApp() {
|
|||
$("#nym_form").submit(function (e) { e.preventDefault(); return false; });
|
||||
if (!($("#nym").val())) { $("#nym").val("nym" + Math.floor(Math.random() * 65536)); }
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
field this.nym;
|
||||
field this.status;
|
||||
|
@ -82,8 +82,8 @@ function outputUtterance(who, what) {
|
|||
assertion type inputValue(selector, value);
|
||||
|
||||
function spawnInputChangeMonitor() {
|
||||
actor {
|
||||
during Syndicate.observe(inputValue($selector, _)) actor {
|
||||
spawn {
|
||||
during Syndicate.observe(inputValue($selector, _)) spawn {
|
||||
field this.value = $(selector).val();
|
||||
assert inputValue(selector, this.value);
|
||||
on message Syndicate.UI.globalEvent(selector, 'change', $e) {
|
||||
|
|
|
@ -9,7 +9,7 @@ assertion type componentPresent(name);
|
|||
// TV
|
||||
|
||||
function spawnTV() {
|
||||
actor {
|
||||
spawn {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
during tvAlert($text) {
|
||||
assert ui.context(text).html('#tv', Mustache.render($('#alert_template').html(), { text: text }));
|
||||
|
@ -21,7 +21,7 @@ function spawnTV() {
|
|||
// Remote control and listener
|
||||
|
||||
function spawnRemoteControl() {
|
||||
actor {
|
||||
spawn {
|
||||
assert componentPresent('remote control');
|
||||
on message Syndicate.UI.globalEvent('#remote-control', 'click', _) {
|
||||
:: remoteClick();
|
||||
|
@ -30,7 +30,7 @@ function spawnRemoteControl() {
|
|||
}
|
||||
|
||||
function spawnRemoteListener() {
|
||||
actor {
|
||||
spawn {
|
||||
this.stoveIsOn = false;
|
||||
// In principle, we should start up in "power undefined" state and
|
||||
// count clicks we get in that state; when we then learn the real
|
||||
|
@ -53,7 +53,7 @@ function spawnRemoteListener() {
|
|||
// Stove switch and power draw monitor
|
||||
|
||||
function spawnStoveSwitch() {
|
||||
actor {
|
||||
spawn {
|
||||
field this.powerOn = false;
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
|
||||
|
@ -77,7 +77,7 @@ function spawnStoveSwitch() {
|
|||
}
|
||||
|
||||
function spawnPowerDrawMonitor() {
|
||||
actor {
|
||||
spawn {
|
||||
field this.watts = 0;
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
|
||||
|
@ -99,7 +99,7 @@ function spawnPowerDrawMonitor() {
|
|||
// Timeout listener
|
||||
|
||||
function spawnTimeoutListener() {
|
||||
actor {
|
||||
spawn {
|
||||
during powerDraw($watts) {
|
||||
on start {
|
||||
if (watts > 0) {
|
||||
|
@ -119,7 +119,7 @@ function spawnTimeoutListener() {
|
|||
}
|
||||
|
||||
// function spawnTimeoutListener() {
|
||||
// actor {
|
||||
// spawn {
|
||||
// on asserted powerDraw($watts) {
|
||||
// if (watts > 0) {
|
||||
// var powerOnTime = Date.now();
|
||||
|
@ -135,7 +135,7 @@ function spawnTimeoutListener() {
|
|||
// }
|
||||
|
||||
// function spawnTimeoutListener() {
|
||||
// actor {
|
||||
// spawn {
|
||||
// this.mostRecentTime = 0;
|
||||
// this.powerOnTime = null;
|
||||
// on asserted powerDraw($watts) {
|
||||
|
@ -153,7 +153,7 @@ function spawnTimeoutListener() {
|
|||
// Failure monitor
|
||||
|
||||
function spawnFailureMonitor() {
|
||||
actor {
|
||||
spawn {
|
||||
on retracted componentPresent($who) {
|
||||
react {
|
||||
assert tvAlert('FAILURE: ' + who);
|
||||
|
@ -167,7 +167,7 @@ function spawnFailureMonitor() {
|
|||
// Chaos Monkey
|
||||
|
||||
function spawnChaosMonkey() {
|
||||
actor* {
|
||||
spawn* {
|
||||
monitorComponent('power draw monitor',
|
||||
'#spawn-power-draw-monitor',
|
||||
'#kill-power-draw-monitor',
|
||||
|
|
|
@ -11,7 +11,7 @@ var G = new Syndicate.Ground(function () {
|
|||
Syndicate.Timer.spawnTimerDriver();
|
||||
Syndicate.Broker.spawnBrokerClientDriver();
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
var id = Syndicate.RandomID.randomId(4, true);
|
||||
|
||||
var email_element = document.getElementById('my_email');
|
||||
|
@ -91,8 +91,8 @@ var G = new Syndicate.Ground(function () {
|
|||
}));
|
||||
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(fromBroker(this.wsurl, locationRecord(_, _, _, _, _)), 0); }), (function() { var _ = Syndicate.__; return { assertion: fromBroker(this.wsurl, locationRecord((Syndicate._$("id")), (Syndicate._$("email")), _, _, _)), metalevel: 0 }; }), (function(id, email) {
|
||||
var _cachedAssertion1472127196930_0 = (function() { var _ = Syndicate.__; return fromBroker(this.wsurl, locationRecord(id, email, _, _, _)); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628703784_0 = (function() { var _ = Syndicate.__; return fromBroker(this.wsurl, locationRecord(id, email, _, _, _)); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
|
@ -145,6 +145,6 @@ var _cachedAssertion1472127196930_0 = (function() { var _ = Syndicate.__; return
|
|||
if (selectedMarker === marker) selectedMarker = null;
|
||||
}));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127196930_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127196930_0, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
} }).bind(this)); });
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628703784_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628703784_0, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
} }); });
|
||||
}).startStepping();
|
||||
|
|
|
@ -10,7 +10,7 @@ ground dataspace G {
|
|||
Syndicate.Timer.spawnTimerDriver();
|
||||
Syndicate.Broker.spawnBrokerClientDriver();
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var id = Syndicate.RandomID.randomId(4, true);
|
||||
|
||||
var email_element = document.getElementById('my_email');
|
||||
|
|
|
@ -9,7 +9,7 @@ ground dataspace G {
|
|||
Syndicate.Timer.spawnTimerDriver();
|
||||
Syndicate.Broker.spawnBrokerClientDriver();
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
var color = tinycolor('hsl ' + (Math.random() * 360 | 0) + ' 100% 50%').toHexString();
|
||||
var x = 0;
|
||||
|
|
|
@ -3,7 +3,7 @@ assertion type beep(counter);
|
|||
ground dataspace {
|
||||
console.log('starting ground boot');
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
stop on asserted Syndicate.observe(beep(_)) {
|
||||
field this.counter = 0;
|
||||
react {
|
||||
|
@ -18,7 +18,7 @@ ground dataspace {
|
|||
}
|
||||
}
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
on message beep($counter) {
|
||||
console.log("beep!", counter);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ ground dataspace G {
|
|||
Syndicate.UI.spawnUIDriver();
|
||||
Syndicate.Timer.spawnTimerDriver();
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
field this.angle;
|
||||
field this.handX;
|
||||
|
|
|
@ -2,7 +2,7 @@ assertion type person(id, firstName, lastName, address, age);
|
|||
message type setSortColumn(number);
|
||||
|
||||
function newRow(id, firstName, lastName, address, age) {
|
||||
actor named ('model' + id) {
|
||||
spawn named ('model' + id) {
|
||||
assert person(id, firstName, lastName, address, age);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ function spawnModel() {
|
|||
}
|
||||
|
||||
function spawnView() {
|
||||
actor named 'view' {
|
||||
spawn named 'view' {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
field this.orderColumn = 2;
|
||||
|
||||
|
@ -37,7 +37,7 @@ function spawnView() {
|
|||
}
|
||||
|
||||
function spawnController() {
|
||||
actor named 'controller' {
|
||||
spawn named 'controller' {
|
||||
on message Syndicate.UI.globalEvent('table#the-table th', 'click', $e) {
|
||||
:: setSortColumn(JSON.parse(e.target.dataset.column));
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ function piece(text, pos, lo, hi, cls) {
|
|||
}
|
||||
|
||||
function spawnGui() {
|
||||
actor {
|
||||
spawn {
|
||||
field this.text = '';
|
||||
field this.pos = 0;
|
||||
field this.highlightState = false;
|
||||
|
@ -78,7 +78,7 @@ function spawnGui() {
|
|||
// Textfield Model
|
||||
|
||||
function spawnModel() {
|
||||
actor {
|
||||
spawn {
|
||||
field this.fieldValue = "initial";
|
||||
field this.cursorPos = this.fieldValue.length; /* positions address gaps between characters */
|
||||
|
||||
|
@ -119,7 +119,7 @@ function spawnModel() {
|
|||
// Search engine
|
||||
|
||||
function spawnSearch() {
|
||||
actor {
|
||||
spawn {
|
||||
field this.searchtext = document.getElementById("searchBox").value;
|
||||
field this.fieldValue = "";
|
||||
field this.highlight = false;
|
||||
|
|
|
@ -20,7 +20,7 @@ var show = Syndicate.Struct.makeConstructor("show", ["completed"]);
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function todoListItemModel(initialId, initialTitle, initialCompleted) {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.declareField(this, "id", initialId);
|
||||
Syndicate.Actor.declareField(this, "title", initialTitle);
|
||||
Syndicate.Actor.declareField(this, "completed", initialCompleted);
|
||||
|
@ -37,7 +37,7 @@ function todoListItemModel(initialId, initialTitle, initialCompleted) {
|
|||
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));
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -50,18 +50,18 @@ function getTemplate(id) {
|
|||
}
|
||||
|
||||
function todoListItemView(id) {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
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() {}));
|
||||
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
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) {
|
||||
var _cachedAssertion1472127199197_0 = (function() { var _ = Syndicate.__; return todo(id, title, completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_0 = (function() { var _ = Syndicate.__; return todo(id, title, completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_1 = (function() { var _ = Syndicate.__; return show(completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_1 = (function() { var _ = Syndicate.__; return show(completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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'
|
||||
|
@ -74,9 +74,9 @@ var _cachedAssertion1472127199197_1 = (function() { var _ = Syndicate.__; return
|
|||
}),
|
||||
id), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_1, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_1, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_1, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_1, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_0, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_0, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
|
||||
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));
|
||||
|
@ -103,7 +103,7 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
Syndicate.Dataspace.send((newTitle ? setTitle(id, newTitle) : deleteTodo(id)));
|
||||
this.editing = false;
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -111,50 +111,50 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
var G = new Syndicate.Ground(function () {
|
||||
Syndicate.UI.spawnUIDriver();
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
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 = "";
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
|
||||
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) {
|
||||
var _cachedAssertion1472127199197_2 = (function() { var _ = Syndicate.__; return activeTodoCount(count); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_2 = (function() { var _ = Syndicate.__; return activeTodoCount(count); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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; }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_2, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_2, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_2, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_2, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_3 = (function() { var _ = Syndicate.__; return totalTodoCount(0); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_3 = (function() { var _ = Syndicate.__; return totalTodoCount(0); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_3, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_3, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_3, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_3, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_4 = (function() { var _ = Syndicate.__; return completedTodoCount(0); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_4 = (function() { var _ = Syndicate.__; return completedTodoCount(0); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('button.clear-completed', 'class', 'hidden'), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_4, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_4, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_4, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_4, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_5 = (function() { var _ = Syndicate.__; return allCompleted(); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_5 = (function() { var _ = Syndicate.__; return allCompleted(); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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)); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_5, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_5, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_5, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_5, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
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));
|
||||
}));
|
||||
|
@ -162,9 +162,9 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
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);
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
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++; }));
|
||||
|
@ -173,39 +173,39 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
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; }));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
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) {
|
||||
var _cachedAssertion1472127199197_6 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash(hash); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_6 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash(hash); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('ul.filters > li > a[href="#'+hash+'"]',
|
||||
'class', 'selected'), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_6, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_6, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_6, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_6, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_7 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_7 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_7, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_7, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_7, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_7, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_8 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/active'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_8 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/active'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(false), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_8, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_8, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_8, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_8, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
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() {
|
||||
var _cachedAssertion1472127199197_9 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/completed'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_9 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/completed'); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(true), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_9, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_9, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
} }).bind(this)); });
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_9, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_9, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
} }); });
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
var db;
|
||||
|
||||
if ('todos-syndicate' in localStorage) {
|
||||
|
@ -217,13 +217,13 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
} else {
|
||||
db = {nextId: 0, todos: {}};
|
||||
Syndicate.Actor.Facet.current.addInitBlock((function() {
|
||||
(function () { Syndicate.Actor.Facet.build((function () { {
|
||||
(function () { Syndicate.Actor.Facet.build(function () { {
|
||||
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'));
|
||||
}));
|
||||
} }).bind(this)); }).call(this);
|
||||
} }); }).call(this);
|
||||
}));
|
||||
}
|
||||
|
||||
|
@ -232,22 +232,22 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
}));
|
||||
|
||||
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) {
|
||||
var _cachedAssertion1472127199197_10 = (function() { var _ = Syndicate.__; return todo(id, _, _); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_10 = (function() { var _ = Syndicate.__; return todo(id, _, _); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
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) {
|
||||
var _cachedAssertion1472127199197_11 = (function() { var _ = Syndicate.__; return todo(id, title, completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628704807_11 = (function() { var _ = Syndicate.__; return todo(id, title, completed); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addInitBlock((function() {
|
||||
db.todos[id] = {id: id, title: title, completed: completed};
|
||||
localStorage['todos-syndicate'] = JSON.stringify(db);
|
||||
}));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_11, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_11, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_11, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_11, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
Syndicate.Actor.Facet.current.addDoneBlock((function() {
|
||||
delete db.todos[id];
|
||||
localStorage['todos-syndicate'] = JSON.stringify(db);
|
||||
}));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127199197_10, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127199197_10, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
} }).bind(this)); });
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628704807_10, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628704807_10, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
} }); });
|
||||
}).startStepping();
|
||||
|
|
|
@ -24,7 +24,7 @@ assertion type show(completed);
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function todoListItemModel(initialId, initialTitle, initialCompleted) {
|
||||
actor {
|
||||
spawn {
|
||||
field this.id = initialId;
|
||||
field this.title = initialTitle;
|
||||
field this.completed = initialCompleted;
|
||||
|
@ -54,7 +54,7 @@ function getTemplate(id) {
|
|||
}
|
||||
|
||||
function todoListItemView(id) {
|
||||
actor {
|
||||
spawn {
|
||||
stop on retracted todo(id, _, _);
|
||||
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
|
@ -109,7 +109,7 @@ function todoListItemView(id) {
|
|||
ground dataspace G {
|
||||
Syndicate.UI.spawnUIDriver();
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
on message Syndicate.UI.globalEvent('.new-todo', 'change', $e) {
|
||||
var newTitle = e.target.value.trim();
|
||||
if (newTitle) :: createTodo(newTitle);
|
||||
|
@ -117,7 +117,7 @@ ground dataspace G {
|
|||
}
|
||||
}
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
this.ui = new Syndicate.UI.Anchor();
|
||||
|
||||
during activeTodoCount($count) {
|
||||
|
@ -150,7 +150,7 @@ ground dataspace G {
|
|||
}
|
||||
}
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
field this.completedCount = 0;
|
||||
field this.activeCount = 0;
|
||||
on asserted todo($id, _, $c) { if (c) this.completedCount++; else this.activeCount++; }
|
||||
|
@ -161,7 +161,7 @@ ground dataspace G {
|
|||
assert allCompleted() when (this.completedCount > 0 && this.activeCount === 0);
|
||||
}
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
during Syndicate.UI.locationHash($hash) {
|
||||
assert Syndicate.UI.uiAttribute('ul.filters > li > a[href="#'+hash+'"]',
|
||||
'class', 'selected');
|
||||
|
@ -179,7 +179,7 @@ ground dataspace G {
|
|||
}
|
||||
}
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
var db;
|
||||
|
||||
if ('todos-syndicate' in localStorage) {
|
||||
|
|
|
@ -72,16 +72,16 @@ var splitProposal = Syndicate.Struct.makeConstructor("splitProposal", ["title","
|
|||
/// core library.
|
||||
///
|
||||
function whileRelevantAssert(P) {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(P, 0); }));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.observe(P), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.observe(P), metalevel: 0 }; }), (function() {}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
|
||||
/// ### Implementation: SELLER
|
||||
|
||||
function seller() {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
|
||||
/// We give our actor two state variables: a dictionary recording our
|
||||
/// inventory of books (mapping title to price), and a counter
|
||||
|
@ -113,11 +113,11 @@ function seller() {
|
|||
/// responsive record, if one exists.
|
||||
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.observe(bookQuote(_, _)), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.observe(bookQuote((Syndicate._$("title")), _)), metalevel: 0 }; }), (function(title) {
|
||||
var _cachedAssertion1472127201683_0 = (function() { var _ = Syndicate.__; return Syndicate.observe(bookQuote(title, _)); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build((function () { {
|
||||
var _cachedAssertion1487628705850_0 = (function() { var _ = Syndicate.__; return Syndicate.observe(bookQuote(title, _)); }).call(this);
|
||||
{ Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(bookQuote(title, this.priceOf(title)), 0); }));
|
||||
}
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1472127201683_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1472127201683_0, metalevel: 0 }; }), (function() {})); }).bind(this)); }}));
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1487628705850_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1487628705850_0, metalevel: 0 }; }), (function() {})); }); }}));
|
||||
|
||||
/// It also responds to order requests.
|
||||
|
||||
|
@ -142,7 +142,7 @@ Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "re
|
|||
order(title, offerPrice, orderId, "March 9th"));
|
||||
}
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
|
||||
/// ### Implementation: SPLIT-PROPOSER and book-quote-requestor
|
||||
|
@ -175,7 +175,7 @@ function buyerA() {
|
|||
|
||||
/// First, retrieve a quote for the title, and analyze the result.
|
||||
|
||||
(function () { Syndicate.Actor.Facet.build((function () { {
|
||||
(function () { Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(bookQuote(title, _), 0); }), (function() { var _ = Syndicate.__; return { assertion: bookQuote(title, (Syndicate._$("price"))), metalevel: 0 }; }), (function(price) {
|
||||
if (price === false) {
|
||||
console.log("A learns that "+title+" is out-of-stock.");
|
||||
|
@ -192,7 +192,7 @@ function buyerA() {
|
|||
trySplit(title, price, price / 2);
|
||||
}
|
||||
}));
|
||||
} }).bind(this)); }).call(this);
|
||||
} }); }).call(this);
|
||||
}
|
||||
|
||||
function trySplit(title, price, contribution) {
|
||||
|
@ -211,7 +211,7 @@ function buyerA() {
|
|||
|
||||
/// Make our proposal, and wait for a response.
|
||||
|
||||
(function () { Syndicate.Actor.Facet.build((function () { {
|
||||
(function () { Syndicate.Actor.Facet.build(function () { {
|
||||
Syndicate.Actor.Facet.current.onEvent(Syndicate.Actor.PRIORITY_NORMAL, true, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(splitProposal(title, price, contribution, true), 0); }), (function() { var _ = Syndicate.__; return { assertion: splitProposal(title, price, contribution, true), metalevel: 0 }; }), (function() {
|
||||
console.log("A learns that the split-proposal for "+
|
||||
title+" was accepted");
|
||||
|
@ -225,7 +225,7 @@ function buyerA() {
|
|||
price,
|
||||
contribution + ((price - contribution) / 2));
|
||||
}));
|
||||
} }).bind(this)); }).call(this);
|
||||
} }); }).call(this);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -234,7 +234,7 @@ function buyerA() {
|
|||
/// ### Implementation: SPLIT-DISPOSER and BUYER
|
||||
|
||||
function buyerB() {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
|
||||
/// This actor maintains a record of the amount of money it has left
|
||||
/// to spend.
|
||||
|
@ -273,7 +273,7 @@ function buyerB() {
|
|||
remainingFunds+" remaining funds");
|
||||
this.funds = remainingFunds;
|
||||
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build((function () { {
|
||||
Syndicate.Actor.spawnActor(function() { Syndicate.Actor.Facet.build(function () { {
|
||||
|
||||
/// While waiting for order confirmation, take the opportunity to
|
||||
/// signal to our SPLIT-PROPOSER that we accepted their proposal.
|
||||
|
@ -289,10 +289,10 @@ function buyerB() {
|
|||
console.log("The order for "+title+" has id "+id+
|
||||
", and will be delivered on "+date);
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
}));
|
||||
} }).bind(this)); });
|
||||
} }); });
|
||||
}
|
||||
|
||||
/// ### Starting Configuration
|
||||
|
|
|
@ -76,7 +76,7 @@ assertion type splitProposal(title, price, contribution, accepted);
|
|||
/// core library.
|
||||
///
|
||||
function whileRelevantAssert(P) {
|
||||
actor {
|
||||
spawn {
|
||||
assert P;
|
||||
stop on retracted Syndicate.observe(P);
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ function whileRelevantAssert(P) {
|
|||
/// ### Implementation: SELLER
|
||||
|
||||
function seller() {
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
/// We give our actor two state variables: a dictionary recording our
|
||||
/// inventory of books (mapping title to price), and a counter
|
||||
|
@ -150,7 +150,7 @@ function seller() {
|
|||
/// ### Implementation: SPLIT-PROPOSER and book-quote-requestor
|
||||
|
||||
function buyerA() {
|
||||
actor* {
|
||||
spawn* {
|
||||
var self = this;
|
||||
|
||||
/// Our actor remembers which books remain on its shopping list, and
|
||||
|
@ -238,7 +238,7 @@ function buyerA() {
|
|||
/// ### Implementation: SPLIT-DISPOSER and BUYER
|
||||
|
||||
function buyerB() {
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
/// This actor maintains a record of the amount of money it has left
|
||||
/// to spend.
|
||||
|
@ -276,7 +276,7 @@ function buyerB() {
|
|||
remainingFunds+" remaining funds");
|
||||
this.funds = remainingFunds;
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
/// While waiting for order confirmation, take the opportunity to
|
||||
/// signal to our SPLIT-PROPOSER that we accepted their proposal.
|
||||
|
|
|
@ -76,7 +76,7 @@ This routine is under consideration for possible addition to the
|
|||
core library.
|
||||
|
||||
function whileRelevantAssert(P) {
|
||||
actor {
|
||||
spawn {
|
||||
assert P;
|
||||
stop on retracted Syndicate.observe(P);
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ core library.
|
|||
### Implementation: SELLER
|
||||
|
||||
function seller() {
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
We give our actor two state variables: a dictionary recording our
|
||||
inventory of books (mapping title to price), and a counter
|
||||
|
@ -150,7 +150,7 @@ replying to the orderer.
|
|||
### Implementation: SPLIT-PROPOSER and book-quote-requestor
|
||||
|
||||
function buyerA() {
|
||||
actor* {
|
||||
spawn* {
|
||||
var self = this;
|
||||
|
||||
Our actor remembers which books remain on its shopping list, and
|
||||
|
@ -238,7 +238,7 @@ Make our proposal, and wait for a response.
|
|||
### Implementation: SPLIT-DISPOSER and BUYER
|
||||
|
||||
function buyerB() {
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
This actor maintains a record of the amount of money it has left
|
||||
to spend.
|
||||
|
@ -276,7 +276,7 @@ on a split.
|
|||
remainingFunds+" remaining funds");
|
||||
this.funds = remainingFunds;
|
||||
|
||||
actor {
|
||||
spawn {
|
||||
|
||||
While waiting for order confirmation, take the opportunity to
|
||||
signal to our SPLIT-PROPOSER that we accepted their proposal.
|
||||
|
|
Loading…
Reference in New Issue