-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathdefaultPane.js
More file actions
103 lines (92 loc) · 3.12 KB
/
defaultPane.js
File metadata and controls
103 lines (92 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* Default Pane
**
** This outline pane contains the properties which are
** normally displayed to the user. See also: internalPane
** This pane hides the ones considered too low-level for the normal user.
*/
import * as UI from 'solid-ui'
import * as $rdf from 'rdflib'
const ns = UI.ns
export const defaultPane = {
icon: UI.icons.originalIconBase + 'about.png',
name: 'default',
audience: [ns.solid('Developer')],
label: function (_subject) {
return 'about '
},
render: function (subject, context) {
const dom = context.dom
const filter = function (pred, inverse) {
if (
typeof context.session.paneRegistry.byName('internal').predicates[
pred.uri
] !== 'undefined'
) {
return false
}
if (
inverse &&
pred.uri === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
) {
return false
}
return true
}
const outliner = context.getOutliner(dom)
const kb = context.session.store
// var outline = outliner; // @@
UI.log.info('@defaultPane.render, dom is now ' + dom.location)
subject = kb.canon(subject)
const div = dom.createElement('div')
div.setAttribute('class', 'defaultPane')
// appendRemoveIcon(div, subject, div)
let plist = kb.statementsMatching(subject)
outliner.appendPropertyTRs(div, plist, false, filter)
plist = kb.statementsMatching(undefined, undefined, subject)
outliner.appendPropertyTRs(div, plist, true, filter)
if (
subject.termType === 'Literal' &&
subject.value.slice(0, 7) === 'http://'
) {
outliner.appendPropertyTRs(
div,
[$rdf.st(kb.sym(subject.value), UI.ns.link('uri'), subject)],
true,
filter
)
}
if (
(subject.termType === 'NamedNode' &&
kb.updater.editable($rdf.Util.uri.docpart(subject.uri), kb)) ||
(subject.termType === 'BlankNode' &&
kb.anyStatementMatching(subject) &&
kb.anyStatementMatching(subject).why &&
kb.anyStatementMatching(subject).why.uri &&
kb.updater.editable(kb.anyStatementMatching(subject).why.uri))
// check the document containing something about of the bnode @@ what about as object?
/* ! && HCIoptions["bottom insert highlights"].enabled */
) {
const holdingTr = dom.createElement('tr') // these are to minimize required changes
const holdingTd = dom.createElement('td') // in userinput.js
holdingTd.setAttribute('colspan', '2')
holdingTd.setAttribute('notSelectable', 'true')
const img = dom.createElement('img')
img.src = UI.icons.originalIconBase + 'tango/22-list-add-new.png'
img.addEventListener('click', function addNewTripleIconMouseDownListener (
e
) {
outliner.UserInput.addNewPredicateObject(e)
e.stopPropagation()
e.preventDefault()
})
img.className = 'bottom-border-active'
// img.addEventListener('click', thisOutline.UserInput.addNewPredicateObject,false)
div
.appendChild(holdingTr)
.appendChild(holdingTd)
.appendChild(img)
}
return div
}
}
// ends