Update
This commit is contained in:
parent
aa26470f5b
commit
a2168f9262
|
@ -154,7 +154,7 @@ var modifiedSourceActions = {
|
|||
},
|
||||
|
||||
FacetSituation_assert: function(_assert, expr, whenClause, _sc) {
|
||||
return '\n.addAssertion(' + buildSubscription([expr], 'assert', 'pattern', whenClause) + ')';
|
||||
return '\n.addAssertion(' + buildSubscription([expr], 'assert', 'pattern', whenClause, null) + ')';
|
||||
},
|
||||
FacetSituation_event: function(_on, eventPattern, block) {
|
||||
return buildOnEvent(false,
|
||||
|
@ -168,18 +168,20 @@ var modifiedSourceActions = {
|
|||
return '\n.addOnEventHandler((function(' + id.asES5 + ') ' + block.asES5 + '))';
|
||||
},
|
||||
FacetSituation_during: function(_during, pattern, facetBlock) {
|
||||
var cachedAssertionVar = gensym('cachedAssertion');
|
||||
return buildOnEvent(false,
|
||||
'asserted',
|
||||
pattern.subscription,
|
||||
pattern.projection,
|
||||
pattern.bindings,
|
||||
'{ ' + facetBlock.facetVarDecls +
|
||||
'\nvar '+cachedAssertionVar+' = '+pattern.instantiatedAssertion+';'+
|
||||
'\nSyndicate.Actor.createFacet()' +
|
||||
facetBlock.asES5 +
|
||||
buildOnEvent(true,
|
||||
'retracted',
|
||||
pattern.instantiatedSubscription,
|
||||
pattern.instantiatedProjection,
|
||||
pattern.instantiatedSubscription(cachedAssertionVar),
|
||||
pattern.instantiatedProjection(cachedAssertionVar),
|
||||
[],
|
||||
'{}') +
|
||||
'.completeBuild(); }');
|
||||
|
@ -223,7 +225,7 @@ semantics.addAttribute('eventType', {
|
|||
FacetTransitionEventPattern_risingEdge: function (_lp, expr, _rp) { return 'risingEdge'; }
|
||||
});
|
||||
|
||||
function buildSubscription(children, patchMethod, mode, whenClause) {
|
||||
function buildSubscription(children, patchMethod, mode, whenClause, cachedAssertionVar) {
|
||||
var fragments = [];
|
||||
var hasWhenClause = (whenClause && (whenClause.numChildren === 1));
|
||||
fragments.push('(function() { var _ = Syndicate.__; return ');
|
||||
|
@ -235,7 +237,11 @@ function buildSubscription(children, patchMethod, mode, whenClause) {
|
|||
} else {
|
||||
fragments.push('{ assertion: ');
|
||||
}
|
||||
children.forEach(function (c) { c.buildSubscription(fragments, mode); });
|
||||
if (cachedAssertionVar) {
|
||||
fragments.push(cachedAssertionVar);
|
||||
} else {
|
||||
children.forEach(function (c) { c.buildSubscription(fragments, mode); });
|
||||
}
|
||||
if (patchMethod) {
|
||||
fragments.push(', ');
|
||||
} else {
|
||||
|
@ -256,25 +262,35 @@ function buildSubscription(children, patchMethod, mode, whenClause) {
|
|||
|
||||
semantics.addAttribute('subscription', {
|
||||
_default: function(children) {
|
||||
return buildSubscription(children, 'sub', 'pattern', null);
|
||||
return buildSubscription(children, 'sub', 'pattern', null, null);
|
||||
}
|
||||
});
|
||||
|
||||
semantics.addAttribute('instantiatedSubscription', {
|
||||
semantics.addAttribute('instantiatedAssertion', {
|
||||
_default: function(children) {
|
||||
return buildSubscription(children, 'sub', 'instantiated', null);
|
||||
var fragments = [];
|
||||
fragments.push('(function() { var _ = Syndicate.__; return ');
|
||||
children.forEach(function (c) { c.buildSubscription(fragments, 'instantiated'); });
|
||||
fragments.push('; })()');
|
||||
return fragments.join('');
|
||||
}
|
||||
});
|
||||
|
||||
semantics.addAttribute('instantiatedProjection', {
|
||||
semantics.addOperation('instantiatedSubscription(cachedAssertionVar)', {
|
||||
_default: function(children) {
|
||||
return buildSubscription(children, null, 'instantiated', null);
|
||||
return buildSubscription(children, 'sub', 'instantiated', null, this.args.cachedAssertionVar);
|
||||
}
|
||||
});
|
||||
|
||||
semantics.addOperation('instantiatedProjection(cachedAssertionVar)', {
|
||||
_default: function(children) {
|
||||
return buildSubscription(children, null, 'instantiated', null, this.args.cachedAssertionVar);
|
||||
}
|
||||
});
|
||||
|
||||
semantics.addAttribute('projection', {
|
||||
_default: function(children) {
|
||||
return buildSubscription(children, null, 'projection', null);
|
||||
return buildSubscription(children, null, 'projection', null, null);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -529,7 +545,7 @@ function translateSyndicateScripts() {
|
|||
|
||||
var output = compiler.compileSyndicateSource(allSourceText);
|
||||
var f = new Function(output);
|
||||
f();
|
||||
f.call(window);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', translateSyndicateScripts, false);
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -16,7 +16,7 @@
|
|||
<form name="nym_form">
|
||||
<fieldset>
|
||||
<label class="control-label" for="wsurl">Server:</label>
|
||||
<input type="text" id="wsurl" name="wsurl" value="ws://demo-broker.syndicate-lang.org:8000/">
|
||||
<input type="text" id="wsurl" name="wsurl" value="wss://demo-broker.syndicate-lang.org:8443/">
|
||||
|
||||
<label class="control-label" for="nym">Nym:</label>
|
||||
<input type="text" id="nym" name="nym" value="">
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
*.expanded.js
|
|
@ -0,0 +1,7 @@
|
|||
all: index.expanded.js
|
||||
|
||||
%.expanded.js: %.js
|
||||
../../bin/syndicatec $< > $@ || (rm -f $@; false)
|
||||
|
||||
clean:
|
||||
rm -f *.expanded.js
|
|
@ -0,0 +1,125 @@
|
|||
"use strict";
|
||||
var locationRecord = Syndicate.Struct.makeConstructor('location', ["id","email","timestamp","lat","lng"]);
|
||||
var findMarker = Syndicate.Struct.makeConstructor("findMarker", ["id"]);
|
||||
|
||||
var brokerConnection = Syndicate.Broker.brokerConnection;
|
||||
var toBroker = Syndicate.Broker.toBroker;
|
||||
var fromBroker = Syndicate.Broker.fromBroker;
|
||||
|
||||
var G = new Syndicate.Ground(function () {
|
||||
Syndicate.UI.spawnUIDriver();
|
||||
Syndicate.Timer.spawnTimerDriver();
|
||||
Syndicate.Broker.spawnBrokerClientDriver();
|
||||
|
||||
Syndicate.Actor.spawnActor(new Object(), function() {
|
||||
var id = Syndicate.RandomID.randomId(4, true);
|
||||
|
||||
var email_element = document.getElementById('my_email');
|
||||
if (localStorage.my_email) {
|
||||
email_element.value = localStorage.my_email;
|
||||
} else {
|
||||
localStorage.my_email = email_element.value = id;
|
||||
}
|
||||
|
||||
var group_element = document.getElementById('group');
|
||||
var url_group_match = /group=(.*)$/.exec(document.location.search || '');
|
||||
if (url_group_match) {
|
||||
localStorage.group = group_element.value = url_group_match[1];
|
||||
} else if (localStorage.group) {
|
||||
group_element.value = localStorage.group;
|
||||
} else {
|
||||
localStorage.group = group_element.value = 'Public';
|
||||
}
|
||||
|
||||
var mapInitialized = false;
|
||||
var map = new google.maps.Map(document.getElementById('map'), {
|
||||
center: {lat: 42, lng: -71},
|
||||
zoom: 18
|
||||
});
|
||||
|
||||
var infoWindow = new google.maps.InfoWindow();
|
||||
var geocoder = new google.maps.Geocoder();
|
||||
|
||||
var wsurl_base = 'wss://demo-broker.syndicate-lang.org:8443/location/';
|
||||
var wsurl = wsurl_base + group_element.value.trim();
|
||||
|
||||
var watchId = ('geolocation' in navigator)
|
||||
&& navigator.geolocation.watchPosition(Syndicate.Dataspace.wrap(function (pos) {
|
||||
Syndicate.Dataspace.send(locationRecord(id,
|
||||
email_element.value.trim(),
|
||||
+new Date(),
|
||||
pos.coords.latitude,
|
||||
pos.coords.longitude));
|
||||
if (!mapInitialized && map) {
|
||||
mapInitialized = true;
|
||||
map.setCenter({lat: pos.coords.latitude, lng: pos.coords.longitude});
|
||||
}
|
||||
}));
|
||||
|
||||
(function () { var currentLocation = null; var selectedMarker = null;
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(brokerConnection(wsurl), 0); }))
|
||||
.addAssertion((function() { var _ = Syndicate.__; return (currentLocation) ? Syndicate.Patch.assert(toBroker(wsurl,currentLocation), 0) : Syndicate.Patch.emptyPatch; }))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.globalEvent('#my_email','change',_), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.globalEvent('#my_email','change',_), metalevel: 0 }; }), (function() {
|
||||
localStorage.my_email = currentLocation[1] = email_element.value.trim();
|
||||
}))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.globalEvent('#group','change',_), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.globalEvent('#group','change',_), metalevel: 0 }; }), (function() {
|
||||
localStorage.group = group_element.value.trim();
|
||||
wsurl = wsurl_base + group_element.value.trim();
|
||||
}))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.globalEvent('#findMarker','click',_), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.globalEvent('#findMarker','click',(Syndicate._$("e"))), metalevel: 0 }; }), (function(e) {
|
||||
Syndicate.Dataspace.send(findMarker(document.getElementById('markerList').value));
|
||||
}))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.globalEvent('#markerList','change',_), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.globalEvent('#markerList','change',(Syndicate._$("e"))), metalevel: 0 }; }), (function(e) {
|
||||
Syndicate.Dataspace.send(findMarker(document.getElementById('markerList').value));
|
||||
}))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub((locationRecord(_,_,_,_,_)), 0); }), (function() { var _ = Syndicate.__; return { assertion: ((Syndicate._$("loc",locationRecord(_,_,_,_,_)))), metalevel: 0 }; }), (function(loc) {
|
||||
currentLocation = loc;
|
||||
}))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(fromBroker(wsurl,locationRecord(_,_,_,_,_)), 0); }), (function() { var _ = Syndicate.__; return { assertion: fromBroker(wsurl,locationRecord((Syndicate._$("id")),(Syndicate._$("email")),_,_,_)), metalevel: 0 }; }), (function(id, email) { var ui = new Syndicate.UI.Anchor(); var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
clickable: true,
|
||||
icon: 'https://www.gravatar.com/avatar/' + md5(email.trim().toLowerCase()) + '?s=32&d=retro'
|
||||
}); var latestTimestamp = null; var latestPosition = null; function selectMarker() {
|
||||
selectedMarker = marker;
|
||||
updateInfoWindow();
|
||||
infoWindow.open(map, marker);
|
||||
} function updateInfoWindow() {
|
||||
if (selectedMarker === marker && latestPosition && latestTimestamp) {
|
||||
geocoder.geocode({'location': latestPosition}, function (results, status) {
|
||||
if (status === google.maps.GeocoderStatus.OK && results[0]) {
|
||||
infoWindow.setContent(Mustache.render(document.getElementById('info').innerHTML, {
|
||||
email: email,
|
||||
timestamp: latestTimestamp ? latestTimestamp.toString() : '',
|
||||
address: results[0].formatted_address
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
var _cachedAssertion1465643052024_0 = (function() { var _ = Syndicate.__; return fromBroker(wsurl,locationRecord(id,email,_,_,_)); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addInitBlock((function() {
|
||||
marker.addListener('click', Syndicate.Dataspace.wrap(function () {
|
||||
selectMarker();
|
||||
}));
|
||||
}))
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(ui.html('#markerList',Mustache.render(document.getElementById('markerList-option').innerHTML,{id:id,email:email})), 0); }))
|
||||
.onEvent(false, "message", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(findMarker(id), 0); }), (function() { var _ = Syndicate.__; return { assertion: findMarker(id), metalevel: 0 }; }), (function() {
|
||||
selectMarker();
|
||||
if (latestPosition) map.panTo(latestPosition);
|
||||
}))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(fromBroker(wsurl,locationRecord(id,email,_,_,_)), 0); }), (function() { var _ = Syndicate.__; return { assertion: fromBroker(wsurl,locationRecord(id,email,(Syndicate._$("timestamp")),(Syndicate._$("lat")),(Syndicate._$("lng")))), metalevel: 0 }; }), (function(timestamp, lat, lng) {
|
||||
latestTimestamp = new Date(timestamp);
|
||||
latestPosition = {lat: lat, lng: lng};
|
||||
marker.setPosition(latestPosition);
|
||||
marker.setTitle(email + ' ' + latestTimestamp.toTimeString());
|
||||
updateInfoWindow();
|
||||
}))
|
||||
.addDoneBlock((function() {
|
||||
marker.setMap(null);
|
||||
if (selectedMarker === marker) selectedMarker = null;
|
||||
}))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643052024_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643052024_0, metalevel: 0 }; }), (function() {})).completeBuild(); })).completeBuild(); })();
|
||||
});
|
||||
}).startStepping();
|
|
@ -8,9 +8,7 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.2.1/mustache.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.3.0/js/md5.min.js"></script>
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAgjLSNu9Cx4V1bNxhSTM4ZzqADbGoYmZ0"></script>
|
||||
<script src="../../dist/syndicatecompiler.js"></script>
|
||||
<script src="../../dist/syndicate.js"></script>
|
||||
<script type="text/syndicate-js" src="index.js"></script>
|
||||
<script src="../../dist/syndicate.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<template id="json">
|
||||
|
@ -48,5 +46,7 @@
|
|||
<button id="findMarker">Find</button>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<script src="index.expanded.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
assertion type location(id, email, timestamp, lat, lng);
|
||||
assertion type locationRecord(id, email, timestamp, lat, lng) = 'location';
|
||||
message type findMarker(id);
|
||||
|
||||
var brokerConnection = Syndicate.Broker.brokerConnection;
|
||||
|
@ -44,11 +44,11 @@ ground dataspace G {
|
|||
|
||||
var watchId = ('geolocation' in navigator)
|
||||
&& navigator.geolocation.watchPosition(Syndicate.Dataspace.wrap(function (pos) {
|
||||
:: location(id,
|
||||
email_element.value.trim(),
|
||||
+new Date(),
|
||||
pos.coords.latitude,
|
||||
pos.coords.longitude);
|
||||
:: locationRecord(id,
|
||||
email_element.value.trim(),
|
||||
+new Date(),
|
||||
pos.coords.latitude,
|
||||
pos.coords.longitude);
|
||||
if (!mapInitialized && map) {
|
||||
mapInitialized = true;
|
||||
map.setCenter({lat: pos.coords.latitude, lng: pos.coords.longitude});
|
||||
|
@ -78,11 +78,11 @@ ground dataspace G {
|
|||
:: findMarker(document.getElementById('markerList').value);
|
||||
}
|
||||
|
||||
on message ($loc = location(_, _, _, _, _)) {
|
||||
on message ($loc = locationRecord(_, _, _, _, _)) {
|
||||
currentLocation = loc;
|
||||
}
|
||||
|
||||
during fromBroker(wsurl, location($id, $email, _, _, _)) {
|
||||
during fromBroker(wsurl, locationRecord($id, $email, _, _, _)) {
|
||||
var ui = new Syndicate.UI.Anchor();
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
|
@ -123,7 +123,7 @@ ground dataspace G {
|
|||
selectMarker();
|
||||
if (latestPosition) map.panTo(latestPosition);
|
||||
}
|
||||
on asserted fromBroker(wsurl, location(id, email, $timestamp, $lat, $lng)) {
|
||||
on asserted fromBroker(wsurl, locationRecord(id, email, $timestamp, $lat, $lng)) {
|
||||
latestTimestamp = new Date(timestamp);
|
||||
latestPosition = {lat: lat, lng: lng};
|
||||
marker.setPosition(latestPosition);
|
||||
|
|
|
@ -22,7 +22,7 @@ ground dataspace G {
|
|||
return Math.max(Math.min(v, limit), -limit);
|
||||
}
|
||||
|
||||
var wsurl = 'ws://demo-broker.syndicate-lang.org:8000/';
|
||||
var wsurl = 'wss://demo-broker.syndicate-lang.org:8443/';
|
||||
react {
|
||||
assert brokerConnection(wsurl);
|
||||
|
||||
|
|
|
@ -54,12 +54,14 @@ function todoListItemView(id) {
|
|||
(function () {
|
||||
Syndicate.Actor.createFacet()
|
||||
.onEvent(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 _cachedAssertion1465643053181_0 = (function() { var _ = Syndicate.__; return todo(id,title,completed); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(show(completed), 0); }), (function() { var _ = Syndicate.__; return { assertion: show(completed), metalevel: 0 }; }), (function() {
|
||||
var _cachedAssertion1465643053181_1 = (function() { var _ = Syndicate.__; return show(completed); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.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); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(show(completed), 0); }), (function() { var _ = Syndicate.__; return { assertion: show(completed), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(todo(id,title,completed), 0); }), (function() { var _ = Syndicate.__; return { assertion: todo(id,title,completed), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_1, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_1, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_0, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_0, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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));
|
||||
}))
|
||||
|
@ -107,27 +109,31 @@ Syndicate.Actor.createFacet()
|
|||
(function () {
|
||||
Syndicate.Actor.createFacet()
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(activeTodoCount(_), 0); }), (function() { var _ = Syndicate.__; return { assertion: activeTodoCount((Syndicate._$("count"))), metalevel: 0 }; }), (function(count) {
|
||||
var _cachedAssertion1465643053181_2 = (function() { var _ = Syndicate.__; return activeTodoCount(count); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(this.ui.context('count').html('.todo-count strong',''+count), 0); }))
|
||||
.addAssertion((function() { var _ = Syndicate.__; return (count !== 1) ? Syndicate.Patch.assert(this.ui.context('plural').html('.todo-count span.s','s'), 0) : Syndicate.Patch.emptyPatch; }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(activeTodoCount(count), 0); }), (function() { var _ = Syndicate.__; return { assertion: activeTodoCount(count), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_2, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_2, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(totalTodoCount(0), 0); }), (function() { var _ = Syndicate.__; return { assertion: totalTodoCount(0), metalevel: 0 }; }), (function() {
|
||||
var _cachedAssertion1465643053181_3 = (function() { var _ = Syndicate.__; return totalTodoCount(0); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('section.main','class','hidden'), 0); }))
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('footer.footer','class','hidden'), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(totalTodoCount(0), 0); }), (function() { var _ = Syndicate.__; return { assertion: totalTodoCount(0), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_3, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_3, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(completedTodoCount(0), 0); }), (function() { var _ = Syndicate.__; return { assertion: completedTodoCount(0), metalevel: 0 }; }), (function() {
|
||||
var _cachedAssertion1465643053181_4 = (function() { var _ = Syndicate.__; return completedTodoCount(0); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('button.clear-completed','class','hidden'), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(completedTodoCount(0), 0); }), (function() { var _ = Syndicate.__; return { assertion: completedTodoCount(0), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_4, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_4, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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());
|
||||
}))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(allCompleted(), 0); }), (function() { var _ = Syndicate.__; return { assertion: allCompleted(), metalevel: 0 }; }), (function() {
|
||||
var _cachedAssertion1465643053181_5 = (function() { var _ = Syndicate.__; return allCompleted(); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addInitBlock((function() { Syndicate.Dataspace.send(Syndicate.UI.setProperty('.toggle-all', 'checked', true)); }))
|
||||
.addDoneBlock((function() { Syndicate.Dataspace.send(Syndicate.UI.setProperty('.toggle-all', 'checked', false)); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(allCompleted(), 0); }), (function() { var _ = Syndicate.__; return { assertion: allCompleted(), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_5, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_5, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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));
|
||||
}))
|
||||
|
@ -153,22 +159,26 @@ Syndicate.Actor.createFacet()
|
|||
(function () {
|
||||
Syndicate.Actor.createFacet()
|
||||
.onEvent(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 _cachedAssertion1465643053181_6 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash(hash); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(Syndicate.UI.uiAttribute('ul.filters > li > a[href="#'+hash+'"]','class','selected'), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.locationHash(hash), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.locationHash(hash), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_6, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_6, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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 _cachedAssertion1465643053181_7 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/'); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(true), 0); }))
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(false), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.locationHash('/'), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.locationHash('/'), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_7, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_7, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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 _cachedAssertion1465643053181_8 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/active'); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(false), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.locationHash('/active'), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.locationHash('/active'), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_8, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_8, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(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 _cachedAssertion1465643053181_9 = (function() { var _ = Syndicate.__; return Syndicate.UI.locationHash('/completed'); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addAssertion((function() { var _ = Syndicate.__; return Syndicate.Patch.assert(show(true), 0); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(Syndicate.UI.locationHash('/completed'), 0); }), (function() { var _ = Syndicate.__; return { assertion: Syndicate.UI.locationHash('/completed'), metalevel: 0 }; }), (function() {})).completeBuild(); })).completeBuild(); })();
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_9, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_9, metalevel: 0 }; }), (function() {})).completeBuild(); })).completeBuild(); })();
|
||||
});
|
||||
|
||||
Syndicate.Actor.spawnActor(new Object(), function() {
|
||||
|
@ -197,18 +207,20 @@ Syndicate.Actor.createFacet()
|
|||
todoListItemModel(db.nextId++, title, false);
|
||||
}))
|
||||
.onEvent(false, "asserted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(todo(_,_,_), 0); }), (function() { var _ = Syndicate.__; return { assertion: todo((Syndicate._$("id")),_,_), metalevel: 0 }; }), (function(id) {
|
||||
var _cachedAssertion1465643053181_10 = (function() { var _ = Syndicate.__; return todo(id,_,_); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.onEvent(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 _cachedAssertion1465643053181_11 = (function() { var _ = Syndicate.__; return todo(id,title,completed); })();
|
||||
Syndicate.Actor.createFacet()
|
||||
.addInitBlock((function() {
|
||||
db.todos[id] = {id: id, title: title, completed: completed};
|
||||
localStorage['todos-syndicate'] = JSON.stringify(db);
|
||||
}))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(todo(id,title,completed), 0); }), (function() { var _ = Syndicate.__; return { assertion: todo(id,title,completed), metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_11, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_11, metalevel: 0 }; }), (function() {})).completeBuild(); }))
|
||||
.addDoneBlock((function() {
|
||||
delete db.todos[id];
|
||||
localStorage['todos-syndicate'] = JSON.stringify(db);
|
||||
}))
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(todo(id,_,_), 0); }), (function() { var _ = Syndicate.__; return { assertion: todo(id,_,_), metalevel: 0 }; }), (function() {})).completeBuild(); })).completeBuild(); })();
|
||||
.onEvent(true, "retracted", (function() { var _ = Syndicate.__; return Syndicate.Patch.sub(_cachedAssertion1465643053181_10, 0); }), (function() { var _ = Syndicate.__; return { assertion: _cachedAssertion1465643053181_10, metalevel: 0 }; }), (function() {})).completeBuild(); })).completeBuild(); })();
|
||||
});
|
||||
}).startStepping();
|
||||
|
|
Loading…
Reference in New Issue