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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
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
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
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
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
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
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
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
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
235 quads = @graph.findByIRI(s, p)
6ea2e1aa5070 uriValue support
Drew Perttula <drewp@bigasterisk.com>
parents: 1357
diff changeset
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