Mercurial > code > home > repos > light9
annotate light9/web/graph.coffee @ 1363:233b81d9bd9d
simple first version of SyncedGraph.runHandler
Ignore-this: bbe6aa9fe4edd0de1564b57c1077e711
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Mon, 06 Jun 2016 05:57:30 +0000 |
parents | 168262618f2d |
children | ca5b10d7ecd1 |
rev | line source |
---|---|
1346
2809a8b732f6
optimize graph lookup calls during zoom steps
Drew Perttula <drewp@bigasterisk.com>
parents:
1334
diff
changeset
|
1 log = console.log |
2809a8b732f6
optimize graph lookup calls during zoom steps
Drew Perttula <drewp@bigasterisk.com>
parents:
1334
diff
changeset
|
2 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
3 # Patch is {addQuads: <quads>, delQuads: <quads>} |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
4 # <quads> is [{subject: s, ...}, ...] |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
5 |
1362
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
6 # for mocha |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
7 if require? |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
8 `window = {}` |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
9 `N3 = require('./lib/N3.js-1d2d975c10ad3252d38393c3ea97b36fd3ab986a/N3.js')` |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
10 `d3 = require('./lib/d3/build/d3.min.js')` |
1362
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
11 `RdfDbClient = require('./rdfdbclient.js').RdfDbClient` |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
12 module.exports = window |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
13 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
14 RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
15 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
16 patchSizeSummary = (patch) -> |
1350
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
17 '-' + patch.delQuads.length + ' +' + patch.addQuads.length |
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
18 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
19 # (sloppily shared to rdfdbclient.coffee too) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
20 window.patchSizeSummary = patchSizeSummary |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
21 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
22 # partial port of autodepgraphapi.py |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
23 class GraphWatchers # throw this one away; use AutoDependencies |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
24 constructor: -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
25 @handlersSp = {} # {s: {p: [handlers]}} |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
26 subscribe: (s, p, o, onChange) -> # return subscription handle |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
27 if o? then throw Error('not implemented') |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
28 if not @handlersSp[s] |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
29 @handlersSp[s] = {} |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
30 if not @handlersSp[s][p] |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
31 @handlersSp[s][p] = [] |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
32 @handlersSp[s][p].push(onChange) |
1357
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
33 handle = {s: s, p: p, func: onChange} |
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
34 return handle |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
35 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
36 unsubscribe: (subscription) -> |
1357
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
37 spList = @handlersSp[subscription.s][subscription.p] |
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
38 i = spList.indexOf(subscription.func) |
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
39 if i == -1 |
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
40 throw new Error('subscription not found') |
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
41 spList.splice(i, 1) |
1334
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
42 |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
43 matchingHandlers: (quad) -> |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
44 matches = [] |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
45 for subjDict in [@handlersSp[quad.subject] || {}, @handlersSp[null] || {}] |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
46 for subjPredMatches in [subjDict[quad.predicate] || [], subjDict[null] || []] |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
47 matches = matches.concat(subjPredMatches) |
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
48 return matches |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
49 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
50 graphChanged: (patch) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
51 for quad in patch.delQuads |
1334
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
52 for cb in @matchingHandlers(quad) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
53 # currently calls multiple times, which is ok, but we might |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
54 # group things into fewer patches |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
55 cb({delQuads: [quad], addQuads: []}) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
56 for quad in patch.addQuads |
1334
8406a9fbeb9d
note shape can be edited
Drew Perttula <drewp@bigasterisk.com>
parents:
1328
diff
changeset
|
57 for cb in @matchingHandlers(quad) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
58 cb({delQuads: [], addQuads: [quad]}) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
59 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
60 class Handler |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
61 # a function and the quad patterns it cared about |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
62 constructor: (@func) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
63 patterns = [] # s,p,o,g quads that should trigger the next run |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
64 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
65 class AutoDependencies |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
66 constructor: () -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
67 @handlers = [] # all known Handlers (at least those with non-empty patterns) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
68 @handlerStack = [] # currently running |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
69 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
70 runHandler: (func) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
71 # what if we have this func already? duplicate is safe? |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
72 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
73 h = new Handler(func) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
74 @handlers.push(h) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
75 @_rerunHandler(h) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
76 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
77 _rerunHandler: (handler) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
78 handler.patterns = [] |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
79 @handlerStack.push(handler) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
80 try |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
81 handler.func() |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
82 catch e |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
83 log('error running handler: ', e) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
84 # assuming here it didn't get to do all its queries, we could |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
85 # add a *,*,*,* handler to call for sure the next time? |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
86 finally |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
87 #log('done. got: ', handler.patterns) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
88 @handlerStack.pop() |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
89 # handler might have no watches, in which case we could forget about it |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
90 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
91 graphChanged: (patch) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
92 # SyncedGraph is telling us this patch just got applied to the graph. |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
93 for h in @handlers |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
94 @_rerunHandler(h) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
95 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
96 askedFor: (s, p, o, g) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
97 # SyncedGraph is telling us someone did a query that depended on |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
98 # quads in the given pattern. |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
99 current = @handlerStack[@handlerStack.length - 1] |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
100 if current? |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
101 current.patterns.push([s, p, o, g]) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
102 #log('push', s,p,o,g) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
103 |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
104 class window.SyncedGraph |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
105 # Main graph object for a browser to use. Syncs both ways with |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
106 # rdfdb. Meant to hide the choice of RDF lib, so we can change it |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
107 # later. |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
108 # |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
109 # Note that _applyPatch is the only method to write to the graph, so |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
110 # it can fire subscriptions. |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
111 |
1355
9476e97b57fb
status widget for rdfdb-synced-graph
Drew Perttula <drewp@bigasterisk.com>
parents:
1354
diff
changeset
|
112 constructor: (@patchSenderUrl, @prefixes, @setStatus) -> |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
113 # patchSenderUrl is the /syncedGraph path of an rdfdb server. |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
114 # prefixes can be used in Uri(curie) calls. |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
115 @_watchers = new GraphWatchers() # old |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
116 @_autoDeps = new AutoDependencies() # replaces GraphWatchers |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
117 @clearGraph() |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
118 |
1362
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
119 if @patchSenderUrl |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
120 @_client = new RdfDbClient(@patchSenderUrl, @clearGraph.bind(@), |
168262618f2d
new test_js target for testing SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1361
diff
changeset
|
121 @_applyPatch.bind(@), @setStatus) |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
122 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
123 clearGraph: -> # for debugging |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
124 # just deletes the statements; watchers are unaffected. |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
125 if @graph? |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
126 @_applyPatch({addQuads: [], delQuads: @graph.find()}) |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
127 |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
128 # if we had a Store already, this lets N3.Store free all its indices/etc |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
129 @graph = N3.Store() |
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
130 @_addPrefixes(@prefixes) |
1350
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
131 |
1347
5c54a1f94050
browser SyncedGraph client connects and receives patches
Drew Perttula <drewp@bigasterisk.com>
parents:
1346
diff
changeset
|
132 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
133 _addPrefixes: (prefixes) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
134 @graph.addPrefixes(prefixes) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
135 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
136 Uri: (curie) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
137 N3.Util.expandPrefixedName(curie, @graph._prefixes) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
138 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
139 Literal: (jsValue) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
140 N3.Util.createLiteral(jsValue) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
141 |
1350
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
142 LiteralRoundedFloat: (f) -> |
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
143 N3.Util.createLiteral(d3.format(".3f")(f), |
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
144 "http://www.w3.org/2001/XMLSchema#decimal") |
36f58b2aa8ef
browser syncedgraph sends patches back to server
Drew Perttula <drewp@bigasterisk.com>
parents:
1347
diff
changeset
|
145 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
146 toJs: (literal) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
147 # incomplete |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
148 parseFloat(N3.Util.getLiteralValue(literal)) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
149 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
150 loadTrig: (trig, cb) -> # for debugging |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
151 patch = {delQuads: [], addQuads: []} |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
152 parser = N3.Parser() |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
153 parser.parse trig, (error, quad, prefixes) => |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
154 if (quad) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
155 patch.addQuads.push(quad) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
156 else |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
157 @_applyPatch(patch) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
158 @_addPrefixes(prefixes) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
159 cb() if cb |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
160 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
161 quads: () -> # for debugging |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
162 [q.subject, q.predicate, q.object, q.graph] for q in @graph.find() |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
163 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
164 applyAndSendPatch: (patch) -> |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
165 @_applyPatch(patch) |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
166 @_client.sendPatch(patch) if @_client |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
167 |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
168 _applyPatch: (patch) -> |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
169 # In most cases you want applyAndSendPatch. |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
170 # |
1354
59eab70254fa
refactor the rdfdb networking out of (js) SyncedGraph
Drew Perttula <drewp@bigasterisk.com>
parents:
1352
diff
changeset
|
171 # This is the only method that writes to @graph! |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
172 for quad in patch.delQuads |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
173 @graph.removeTriple(quad) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
174 for quad in patch.addQuads |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
175 @graph.addTriple(quad) |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
176 #log('applied patch locally', patchSizeSummary(patch)) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
177 @_watchers.graphChanged(patch) |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
178 @_autoDeps.graphChanged(patch) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
179 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
180 getObjectPatch: (s, p, newObject, g) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
181 # send a patch which removes existing values for (s,p,*,c) and |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
182 # adds (s,p,newObject,c). Values in other graphs are not affected. |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
183 existing = @graph.findByIRI(s, p, null, g) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
184 return { |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
185 delQuads: existing, |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
186 addQuads: [{subject: s, predicate: p, object: newObject, graph: g}] |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
187 } |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
188 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
189 patchObject: (s, p, newObject, g) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
190 @applyAndSendPatch(@getObjectPatch(s, p, newObject, g)) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
191 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
192 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
193 subscribe: (s, p, o, onChange) -> # return subscription handle |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
194 # onChange is called with a patch that's limited to the quads |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
195 # that match your request. |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
196 # We call you immediately on existing triples. |
1357
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
197 handle = @_watchers.subscribe(s, p, o, onChange) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
198 immediatePatch = {delQuads: [], addQuads: @graph.findByIRI(s, p, o)} |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
199 if immediatePatch.addQuads.length |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
200 onChange(immediatePatch) |
1357
49f80544a3fb
untested unsubscribe handle support
Drew Perttula <drewp@bigasterisk.com>
parents:
1356
diff
changeset
|
201 return handle |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
202 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
203 unsubscribe: (subscription) -> |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
204 @_watchers.unsubscribe(subscription) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
205 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
206 runHandler: (func) -> |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
207 # runs your func once, tracking graph calls. if a future patch |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
208 # matches what you queried, we runHandler your func again (and |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
209 # forget your queries from the first time). |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
210 @_autoDeps.runHandler(func) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
211 |
1356
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
212 _singleValue: (s, p) -> |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
213 @_autoDeps.askedFor(s, p, null, null) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
214 quads = @graph.findByIRI(s, p) |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
215 switch quads.length |
1356
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
216 when 0 |
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
217 throw new Error("no value for "+s+" "+p) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
218 when 1 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
219 obj = quads[0].object |
1358 | 220 return obj |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
221 else |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
222 throw new Error("too many values: " + JSON.stringify(quads)) |
1356
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
223 |
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
224 floatValue: (s, p) -> |
1358 | 225 parseFloat(N3.Util.getLiteralValue(@_singleValue(s, p))) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
226 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
227 stringValue: (s, p) -> |
1358 | 228 N3.Util.getLiteralValue(@_singleValue(s, p)) |
1356
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1355
diff
changeset
|
229 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
230 uriValue: (s, p) -> |
1358 | 231 @_singleValue(s, p) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
232 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
233 objects: (s, p) -> |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
234 @_autoDeps.askedFor(s, p, null, null) |
1358 | 235 quads = @graph.findByIRI(s, p) |
236 return (q.object for q in quads) | |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
237 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
238 subjects: (p, o) -> |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
239 @_autoDeps.askedFor(null, p, o, null) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
240 quads = @graph.findByIRI(null, p, o) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
241 return (q.subject for q in quads) |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
242 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
243 items: (list) -> |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
244 out = [] |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
245 current = list |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
246 while true |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
247 if current == RDF + 'nil' |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
248 break |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
249 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
250 firsts = @graph.findByIRI(current, RDF + 'first', null) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
251 rests = @graph.findByIRI(current, RDF + 'rest', null) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
252 if firsts.length != 1 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
253 throw new Error("list node #{current} has #{firsts.length} rdf:first edges") |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
254 out.push(firsts[0].object) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
255 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
256 if rests.length != 1 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
257 throw new Error("list node #{current} has #{rests.length} rdf:rest edges") |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
258 current = rests[0].object |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
259 |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
260 return out |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
261 |
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
262 contains: (s, p, o) -> |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
263 @_autoDeps.askedFor(s, p, o, null) |
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
264 return @graph.findByIRI(s, p, o).length > 0 |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
265 |
1363
233b81d9bd9d
simple first version of SyncedGraph.runHandler
Drew Perttula <drewp@bigasterisk.com>
parents:
1362
diff
changeset
|
266 |