60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
var G;
|
|
$(document).ready(function () {
|
|
var Dataspace = Syndicate.Dataspace;
|
|
var sub = Syndicate.sub;
|
|
var assert = Syndicate.assert;
|
|
var retract = Syndicate.retract;
|
|
var seal = Syndicate.seal;
|
|
var __ = Syndicate.__;
|
|
var _$ = Syndicate._$;
|
|
|
|
G = new Syndicate.Ground(function () {
|
|
console.log('starting ground boot');
|
|
|
|
Syndicate.DOM.spawnDOMDriver();
|
|
var DOM = Syndicate.DOM.DOM;
|
|
var jQueryEvent = Syndicate.JQuery.jQueryEvent;
|
|
|
|
Dataspace.spawn({
|
|
boot: function () {
|
|
return assert(DOM("#clicker-holder", "clicker",
|
|
seal(["button", ["span", [["style", "font-style: italic"]],
|
|
"Click me!"]])))
|
|
.andThen(sub(jQueryEvent("button.clicker", "click", __)));
|
|
},
|
|
handleEvent: function (e) {
|
|
if (e.type === "message" && jQueryEvent.isClassOf(e.message)) {
|
|
Dataspace.send("bump_count");
|
|
}
|
|
}
|
|
});
|
|
|
|
Dataspace.spawn({
|
|
counter: 0,
|
|
boot: function () {
|
|
this.updateState();
|
|
return sub("bump_count");
|
|
},
|
|
updateState: function () {
|
|
Dataspace.stateChange(retract(DOM.pattern)
|
|
.andThen(assert(DOM("#counter-holder", "counter",
|
|
seal(["div",
|
|
["p", "The current count is: ",
|
|
this.counter]])))));
|
|
},
|
|
handleEvent: function (e) {
|
|
if (e.type === "message" && e.message === "bump_count") {
|
|
this.counter++;
|
|
this.updateState();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
G.dataspace.onStateChange = function (mux, patch) {
|
|
$("#spy-holder").text(Syndicate.prettyTrie(mux.routingTable));
|
|
};
|
|
|
|
G.startStepping();
|
|
});
|