annotate src/elements/graph-view/GraphView.ts @ 129:f47661b9ed34

merge
author drewp@bigasterisk.com
date Fri, 05 May 2023 21:27:24 -0700
parents 5a1a79f54779
children cf642d395be4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
1 import Immutable from "immutable";
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
2 import { LitElement, PropertyValues, TemplateResult, html } from "lit";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
3 import { customElement, property } from "lit/decorators.js";
109
cbcd82d21356 cleanup
drewp@bigasterisk.com
parents: 108
diff changeset
4 import { NamedNode, Quad, Store, Term } from "n3";
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
5 import { MultiStore } from "../../MultiStore";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
6 import { Patch } from "../../Patch";
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
7 import {
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
8 AlignedTable,
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
9 FreeStatements,
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
10 Layout,
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
11 PredRow,
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
12 SubjRow,
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
13 } from "../../layout/Layout";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
14 import { ViewConfig } from "../../layout/ViewConfig";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
15 import { uniqueSortedTerms } from "../../layout/rdf_value";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
16 import { SuffixLabels } from "../../layout/suffixLabels";
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
17 import { graphViewStyle, pageStyle } from "../../style";
109
cbcd82d21356 cleanup
drewp@bigasterisk.com
parents: 108
diff changeset
18 import { NodeDisplay } from "./NodeDisplay";
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
19 type UriSet = Immutable.Set<NamedNode>;
109
cbcd82d21356 cleanup
drewp@bigasterisk.com
parents: 108
diff changeset
20
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
21 @customElement("graph-view")
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
22 export class GraphView extends LitElement {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
23 @property() graph: MultiStore | null = null;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
24 @property() viewEl: HTMLElement | null = null;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
25
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
26 viewConfig: ViewConfig | null = null;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
27
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
28 nodeDisplay: NodeDisplay | null = null;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
29 constructor() {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
30 super();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
31 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
32
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
33 static styles = [pageStyle, graphViewStyle];
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
34 update(changedProperties: PropertyValues) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
35 if (changedProperties.has("graph") && this.graph) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
36 // const viewUri = new NamedNode(this.viewEl?.getAttribute('uri'))
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
37 const viewUri = new NamedNode(new URL("#view", document.baseURI).href);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
38 this.viewConfig = new ViewConfig(this.graph, viewUri);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
39
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
40 // "when viewconfig is updated..."
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
41 setTimeout(()=>this.requestUpdate(), 1000)
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
42
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
43 this.graph.graphChanged.subscribe(this.onChange?.bind(this));
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
44 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
45 super.update(changedProperties);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
46 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
47
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
48 onChange(p: Patch) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
49 this.requestUpdate();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
50 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
51
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
52 render() {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
53 if (!this.graph) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
54 return;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
55 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
56 return this.makeTemplate(this.graph);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
57 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
58
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
59 makeTemplate(graph: MultiStore): TemplateResult {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
60 if (!this.viewConfig) {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
61 throw new Error();
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
62 }
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
63 const layout = new Layout(this.viewConfig);
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
64 const lr = layout.plan(graph);
15
7ca4ff2088c3 managed to use a newer ts or something, so this includes a bunch of type fixes too
drewp@bigasterisk.com
parents: 9
diff changeset
65
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
66 const labels = new SuffixLabels();
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
67 this._addLabelsForAllTerms(graph, labels);
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
68 labels.planDisplayForNode(this.viewConfig.viewRoot); // todo shoudltn be needed
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
69 this.nodeDisplay = new NodeDisplay(labels);
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
70 let viewTitle = html` (no view)`;
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
71 viewTitle = html` using view
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
72 <a href="${this.viewConfig.viewRoot.value}"
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
73 >{this.nodeDisplay.render(this.viewConfig.viewRoot)}</a
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
74 >`;
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
75 return html`
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
76 <section>
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
77 <h2>View: ${viewTitle}</h2>
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
78 <div>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
79 <!-- todo: graphs and provenance.
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
80 These statements are all in the
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
81 <span data-bind="html: $root.createCurie(graphUri())">...</span> graph.-->
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
82 </div>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
83 ${lr.sections.map(this._renderSection.bind(this))}
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
84 </section>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
85 `;
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
86 }
8
6fefd287aff9 closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
diff changeset
87
97
26c55d5d5202 WIP on views & joins
drewp@bigasterisk.com
parents: 96
diff changeset
88 _addLabelsForAllTerms(graph: Store, labels: SuffixLabels) {
26c55d5d5202 WIP on views & joins
drewp@bigasterisk.com
parents: 96
diff changeset
89 graph.forEach(
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
90 (q: Quad) => {
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
91 if (q.subject.termType === "NamedNode") {
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
92 labels.planDisplayForNode(q.subject);
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
93 }
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
94 if (q.predicate.termType === "NamedNode") {
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
95 labels.planDisplayForNode(q.predicate);
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
96 }
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
97 if (q.object.termType === "NamedNode") {
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
98 labels.planDisplayForNode(q.object);
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
99 }
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
100 if (q.object.termType === "Literal" && q.object.datatype) {
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
101 labels.planDisplayForNode(q.object.datatype);
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
102 }
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
103 },
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
104 null,
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
105 null,
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
106 null,
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
107 null
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
108 );
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
109 }
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
110
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
111 _renderSection(section: AlignedTable | FreeStatements) {
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
112 if ((section as any).columnHeaders) {
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
113 return this._renderAlignedTable(section as AlignedTable);
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
114 } else {
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
115 return this._renderFreeStatements(section as FreeStatements);
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
116 }
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
117 }
8
6fefd287aff9 closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
diff changeset
118
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
119 _renderAlignedTable(section: AlignedTable): TemplateResult {
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
120 const nodeDisplay = this.nodeDisplay;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
121 if (!nodeDisplay) throw new Error();
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
122 const tableTypes: NamedNode[][] = [];
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
123 const typeHeads: TemplateResult[] = [];
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
124 const heads: TemplateResult[] = [];
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
125 for (let ch of section.columnHeaders) {
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
126 const colSpan = 1; //todo
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
127 typeHeads.push(
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
128 html`<th colspan="${colSpan}">
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
129 ${ch.rdfTypes.map((n) => nodeDisplay.render(n))}
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
130 </th>`
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
131 );
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
132
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
133 tableTypes.push(ch.rdfTypes);
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
134 heads.push(html`<th>${nodeDisplay.render(ch.pred)}</th>`);
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
135 }
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
136
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
137 const cells = [];
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
138
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
139 for (let rowIndex in section.rows) {
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
140 const headerCol = nodeDisplay.render(section.rowHeaders[rowIndex]);
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
141 const bodyCols = [];
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
142 for (let cellObjs of section.rows[rowIndex]) {
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
143 const display = cellObjs.map(
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
144 (t) => html`<div>${nodeDisplay.render(t)}</div>`
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
145 );
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
146 bodyCols.push(html`<td>${display}</td>`);
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
147 }
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
148 cells.push(
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
149 html`<tr>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
150 <th>${headerCol}</th>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
151 ${bodyCols}
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
152 </tr>`
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
153 );
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
154 }
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
155 const tableTypesUnique = uniqueSortedTerms(tableTypes.flat());
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
156 const typesDisplay = html`${tableTypesUnique.length == 1 ? "type" : "types"}
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
157 ${tableTypesUnique.map((n) => nodeDisplay.render(n))}`;
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
158
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
159 return html`
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
160 <div>[icon] Resources of ${typesDisplay}</div>
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
161 <div class="typeBlockScroll">
113
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
162 <table class="typeBlock">
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
163 <thead>
118
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
164 <tr>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
165 <th></th>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
166 ${typeHeads}
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
167 </tr>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
168 <tr>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
169 <th>Subject</th>
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
170 ${heads}
c2923b20bf5c support multi labels per column
drewp@bigasterisk.com
parents: 113
diff changeset
171 </tr>
113
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
172 </thead>
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
173 <tbody>
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
174 ${cells}
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
175 </tbody>
4822d5621463 cleanup
drewp@bigasterisk.com
parents: 110
diff changeset
176 </table>
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
177 </div>
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
178 `;
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
179 }
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
180
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
181 _renderFreeStatements(section: FreeStatements): TemplateResult {
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
182 const subjects: NamedNode[] = [];
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
183 let subjPreds = Immutable.Map<NamedNode, UriSet>();
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
184
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
185 return html`<div class="spoGrid">
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
186 grid has rowcount ${section.subjRows.length}
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
187 ${section.subjRows.map(this._subjPredObjsBlock.bind(this))}
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
188 </div>`;
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
189 }
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
190
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
191 _subjPredObjsBlock(row: SubjRow): TemplateResult {
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
192 return html`
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
193 <div class="subject">
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
194 ${this.nodeDisplay?.render(row.subj)}
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
195 <!-- todo: special section for uri/type-and-icon/label/comment -->
110
3cdbbd913f1d table displays now just barely
drewp@bigasterisk.com
parents: 109
diff changeset
196 <div>${row.predRows.map(this._predObjsBlock.bind(this))}</div>
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
197 </div>
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
198 `;
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
199 }
8
6fefd287aff9 closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
diff changeset
200
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
201 _predObjsBlock(row: PredRow): TemplateResult {
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
202 return html`
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
203 <div class="predicate">
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
204 ${this.nodeDisplay?.render(row.pred)}
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
205 <div>${row.objs.map(this._objCell.bind(this))}</div>
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
206 </div>
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
207 `;
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
208 }
8
6fefd287aff9 closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
diff changeset
209
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
210 _objCell(obj: Term): TemplateResult {
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
211 return html`
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
212 <div class="object">
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
213 ${this.nodeDisplay?.render(obj)}
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
214 <!-- indicate what source or graph said this stmt -->
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
215 </div>
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
216 `;
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
217 }
15
7ca4ff2088c3 managed to use a newer ts or something, so this includes a bunch of type fixes too
drewp@bigasterisk.com
parents: 9
diff changeset
218
88
ac7ad087d474 graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents: 84
diff changeset
219 _drawObj(obj: Term): TemplateResult {
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
220 return html` <div>${this.nodeDisplay?.render(obj)}</div> `;
88
ac7ad087d474 graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents: 84
diff changeset
221 }
8
6fefd287aff9 closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
diff changeset
222
88
ac7ad087d474 graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents: 84
diff changeset
223 _drawColumnHead(pred: NamedNode): TemplateResult {
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
224 return html` <th>${this.nodeDisplay?.render(pred)}</th> `;
88
ac7ad087d474 graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents: 84
diff changeset
225 }
15
7ca4ff2088c3 managed to use a newer ts or something, so this includes a bunch of type fixes too
drewp@bigasterisk.com
parents: 9
diff changeset
226
108
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
227 // return html`
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
228 // <div>[icon] Resources of type ${typeNames}</div>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
229 // <div class="typeBlockScroll">
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
230 // <table class="typeBlock">
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
231 // ${this._thead(layout)} ${layout.subjs.map(this._instanceRow(layout))}
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
232 // </table>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
233 // </div>
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
234 // `;
5e6840229a05 rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents: 107
diff changeset
235 // }
84
067d66a45a51 enable more code. factor out setGraphView
drewp@bigasterisk.com
parents: 79
diff changeset
236 }
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
237
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
238 declare global {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
239 interface HTMLElementTagNameMap {
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
240 "graph-view": GraphView;
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
241 }
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 118
diff changeset
242 }