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