annotate src/elements/graph-view/NodeDisplay.ts @ 150:3ce355e4f388 default tip

bye jest; hi vitest. new working test for styles.ts
author drewp@bigasterisk.com
date Mon, 08 May 2023 17:27:44 -0700
parents 5a1a79f54779
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
1 import { html, TemplateResult } from "lit";
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
2 import { Literal, NamedNode, Term, Util } from "n3";
128
5a1a79f54779 big rewrite
drewp@bigasterisk.com
parents: 106
diff changeset
3 import { SuffixLabels } from "../../layout/suffixLabels";
96
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
4
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
5 export class NodeDisplay {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
6 labels: SuffixLabels;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
7 constructor(labels: SuffixLabels) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
8 this.labels = labels;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
9 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
10 render(n: Term | NamedNode): TemplateResult {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
11 if (Util.isLiteral(n)) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
12 n = n as Literal;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
13 let dtPart: any = "";
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
14 if (n.datatype &&
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
15 n.datatype.value != "http://www.w3.org/2001/XMLSchema#string" && // boring
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
16 n.datatype.value !=
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
17 "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString" // boring
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
18 ) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
19 dtPart = html`
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
20 ^^<span class="literalType"> ${this.render(n.datatype)} </span>
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
21 `;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
22 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
23 return html` <span class="literal">${n.value}${dtPart}</span> `;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
24 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
25
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
26 if (Util.isNamedNode(n)) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
27 n = n as NamedNode;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
28 let shortened = false;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
29 let uriValue: string = n.value;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
30 for (let [long, short] of [
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
31 ["http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:"],
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
32 ["http://www.w3.org/2000/01/rdf-schema#", "rdfs:"],
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
33 ["http://purl.org/dc/elements/1.1/", "dc:"],
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
34 ["http://www.w3.org/2001/XMLSchema#", "xsd:"],
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
35 ]) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
36 if (uriValue.startsWith(long)) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
37 uriValue = short + uriValue.substr(long.length);
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
38 shortened = true;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
39 break;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
40 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
41 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
42 if (!shortened) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
43 let dn: string | undefined = this.labels.getLabelForNode(uriValue);
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
44 if (dn === undefined) {
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
45 throw new Error(`dn=${dn}`);
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
46 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
47 uriValue = dn;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
48 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
49
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
50 return html` <a class="graphUri" href="${n.value}">${uriValue}</a> `;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
51 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
52
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
53 return html` [${n.termType} ${n.value}] `;
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
54 }
4d19759d0d9a factor NodeDisplay
drewp@bigasterisk.com
parents:
diff changeset
55 }