annotate src/ConfiguredSources.ts @ 128:5a1a79f54779

big rewrite
author drewp@bigasterisk.com
date Fri, 05 May 2023 21:26:36 -0700
parents
children 9347277e8311
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
1 import { NamedNode } from "n3";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
2 import { SubEvent } from "sub-events";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
3 import { MultiStore } from "./MultiStore";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
4 import { SourceGraph } from "./SourceGraph";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
5 import { ViewConfig } from "./layout/ViewConfig";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
6
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
7 // Connect <streamed-graph>, <sg-source>, <sg-view>, MultiStore, and ViewConfig.
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
8 // Makes the (single) MultiStore and the (updated as needed) ViewConfig.
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
9
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
10 // This is poorly named since it deals in both the <sg-source> elements that you
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
11 // "configured" plus the set of SourceGraph objs that are actually connected to remote graphs.
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
12
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
13 // sic private- this is just for documenting the interface more clearly
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
14 interface IConfiguredSources {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
15 // outputs
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
16 graph: MultiStore; // const- only the graph contents will change
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
17 viewConfig: ViewConfig;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
18
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
19 // methods
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
20 newSourceGraph: (s: SourceGraph) => void;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
21 lostSourceGraph: (s: SourceGraph) => void;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
22 viewUriChanged: (v: NamedNode) => void;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
23
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
24 // events
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
25 viewConfigChanged: SubEvent<ViewConfig>;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
26 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
27
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
28 export class ConfiguredSources implements IConfiguredSources {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
29 graph: MultiStore;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
30 viewConfig: ViewConfig;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
31
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
32 viewConfigChanged: SubEvent<ViewConfig> = new SubEvent();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
33
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
34 private viewUri: NamedNode = new NamedNode("empty-view-config");
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
35
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
36 constructor() {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
37 this.graph = new MultiStore();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
38 this.graph.graphChanged.subscribe(() => this.viewConfigMaybeChanged());
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
39 this.viewConfig = new ViewConfig(this.graph, this.viewUri);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
40 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
41
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
42 private viewConfigMaybeChanged() {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
43 this.viewConfig = new ViewConfig(this.graph, this.viewUri);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
44 this.viewConfigChanged.emit(this.viewConfig);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
45 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
46
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
47 newSourceGraph(s: SourceGraph) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
48 this.graph.newStore(s);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
49 this.viewConfigMaybeChanged();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
50 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
51
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
52 lostSourceGraph(s: SourceGraph) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
53 throw new Error("notimplemented");
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
54 this.viewConfigMaybeChanged();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
55 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
56
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
57 viewUriChanged(v: NamedNode) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
58 if (v && v == this.viewUri) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
59 return;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
60 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
61 this.viewUri = v;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
62 this.viewConfigMaybeChanged();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
63 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents:
diff changeset
64 }