solid-panes 3.7.3-125af630 → 3.7.3-1bd42721
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RDFXMLPane.js +58 -0
- package/dist/RDFXMLPane.js.map +1 -0
- package/dist/argument/argumentPane.js +61 -0
- package/dist/argument/argumentPane.js.map +1 -0
- package/dist/attach/attachPane.js +394 -0
- package/dist/attach/attachPane.js.map +1 -0
- package/dist/audio/audioPane.js +182 -0
- package/dist/audio/audioPane.js.map +1 -0
- package/dist/classInstancePane.js +92 -0
- package/dist/classInstancePane.js.map +1 -0
- package/dist/dataContentPane.js +259 -0
- package/dist/dataContentPane.js.map +1 -0
- package/dist/defaultPane.js +75 -0
- package/dist/defaultPane.js.map +1 -0
- package/dist/dokieli/dokieliPane.js +169 -0
- package/dist/dokieli/dokieliPane.js.map +1 -0
- package/dist/dokieli/new.js +28 -0
- package/dist/dokieli/new.js.map +1 -0
- package/dist/form/pane.js +185 -0
- package/dist/form/pane.js.map +1 -0
- package/dist/humanReadablePane.js +135 -0
- package/dist/humanReadablePane.js.map +1 -0
- package/dist/imagePane.js +70 -0
- package/dist/imagePane.js.map +1 -0
- package/dist/microblogPane/microblogPane.js +1031 -0
- package/dist/microblogPane/microblogPane.js.map +1 -0
- package/dist/n3Pane.js +56 -0
- package/dist/n3Pane.js.map +1 -0
- package/dist/outline/manager.js +1997 -0
- package/dist/outline/manager.js.map +1 -0
- package/dist/outline/outlineIcons.js +127 -0
- package/dist/outline/outlineIcons.js.map +1 -0
- package/dist/outline/queryByExample.js +285 -0
- package/dist/outline/queryByExample.js.map +1 -0
- package/dist/outline/userInput.js +1819 -0
- package/dist/outline/userInput.js.map +1 -0
- package/dist/playlist/playlistPane.js +124 -0
- package/dist/playlist/playlistPane.js.map +1 -0
- package/dist/registerPanes.js +146 -0
- package/dist/registerPanes.js.map +1 -0
- package/dist/schedule/formsForSchedule.js +124 -0
- package/dist/schedule/formsForSchedule.js.map +1 -0
- package/dist/schedule/schedulePane.js +889 -0
- package/dist/schedule/schedulePane.js.map +1 -0
- package/dist/slideshow/slideshowPane.js +80 -0
- package/dist/slideshow/slideshowPane.js.map +1 -0
- package/dist/socialPane.js +430 -0
- package/dist/socialPane.js.map +1 -0
- package/dist/tableViewPane.js +57 -0
- package/dist/tableViewPane.js.map +1 -0
- package/dist/transaction/pane.js +478 -0
- package/dist/transaction/pane.js.map +1 -0
- package/dist/transaction/period.js +324 -0
- package/dist/transaction/period.js.map +1 -0
- package/dist/trip/tripPane.js +175 -0
- package/dist/trip/tripPane.js.map +1 -0
- package/dist/ui/pane.js +147 -0
- package/dist/ui/pane.js.map +1 -0
- package/dist/versionInfo.js +2 -2
- package/dist/video/videoPane.js +43 -0
- package/dist/video/videoPane.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
|
+
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
/* Single audio play Pane
|
|
11
|
+
**
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const ns = UI.ns;
|
|
15
|
+
var _default = exports.default = {
|
|
16
|
+
icon: UI.icons.iconBase + 'noun_534313.svg',
|
|
17
|
+
name: 'audio',
|
|
18
|
+
// Does the subject deserve an audio play pane?
|
|
19
|
+
label: function (subject, context) {
|
|
20
|
+
const kb = context.session.store;
|
|
21
|
+
const typeURIs = kb.findTypeURIs(subject);
|
|
22
|
+
const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0];
|
|
23
|
+
for (const t in typeURIs) {
|
|
24
|
+
if (t.startsWith(prefix)) return 'Play audio';
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
},
|
|
28
|
+
render: function (subject, context) {
|
|
29
|
+
const kb = context.session.store;
|
|
30
|
+
const dom = context.dom;
|
|
31
|
+
const options = {
|
|
32
|
+
autoplay: false,
|
|
33
|
+
chain: true,
|
|
34
|
+
chainAlbums: true,
|
|
35
|
+
loop: false
|
|
36
|
+
};
|
|
37
|
+
const removeExtension = function (str) {
|
|
38
|
+
const dot = str.lastIndexOf('.');
|
|
39
|
+
if (dot < 0) return str; // if any
|
|
40
|
+
const slash = str.lastIndexOf('/');
|
|
41
|
+
if (dot < slash) return str;
|
|
42
|
+
return str.slice(0, dot);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// True if there is another file like song.mp3 when this is "song 1.mp3"
|
|
46
|
+
// or this is song.m4a
|
|
47
|
+
//
|
|
48
|
+
const looksRedundant = function (x) {
|
|
49
|
+
const folder = kb.any(undefined, ns.ldp('contains'), x);
|
|
50
|
+
if (!folder) return false;
|
|
51
|
+
const contents = kb.each(folder, ns.ldp('contains'));
|
|
52
|
+
if (contents.length < 2) return false;
|
|
53
|
+
const thisName = x.uri;
|
|
54
|
+
for (let k = 0; k < contents.length; k++) {
|
|
55
|
+
const otherName = contents[k].uri;
|
|
56
|
+
if (thisName.length > otherName.length && thisName.startsWith(removeExtension(otherName))) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (thisName.endsWith('.m4a') && otherName.endsWith('.mp3') && removeExtension(thisName) === removeExtension(otherName)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Alternative methods could include:
|
|
67
|
+
// Accesing metadata in the audio contol, or paring the audio file
|
|
68
|
+
const guessNames = function (x) {
|
|
69
|
+
const a = x.uri.split('/').slice(-3); // Hope artist, album, track
|
|
70
|
+
const decode = function (str) {
|
|
71
|
+
try {
|
|
72
|
+
return decodeURIComponent(str);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
return str;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
artistRow.textContent = decode(a[0]);
|
|
78
|
+
albumRow.textContent = decode(a[1]);
|
|
79
|
+
trackRow.textContent = decode(removeExtension(a[2]));
|
|
80
|
+
};
|
|
81
|
+
const moveOn = function (current, level) {
|
|
82
|
+
return new Promise(function (resolve) {
|
|
83
|
+
level = level || 0;
|
|
84
|
+
if (!options.chain) return resolve(null);
|
|
85
|
+
// Ideally navigate graph else cheat with URI munging:
|
|
86
|
+
const folder = kb.any(undefined, ns.ldp('contains'), current) || current.dir();
|
|
87
|
+
if (!folder) return resolve(null);
|
|
88
|
+
kb.fetcher.load(folder).then(function (_xhr) {
|
|
89
|
+
const contents = kb.each(folder, ns.ldp('contains')); // @@ load if not loaded
|
|
90
|
+
// if (contents.length < 2) return resolve(null) NO might move on from 1-track album
|
|
91
|
+
let j;
|
|
92
|
+
contents.sort(); // sort by URI which hopefully will get tracks in order
|
|
93
|
+
for (let i = 0; i < contents.length; i++) {
|
|
94
|
+
if (current.uri === contents[i].uri) {
|
|
95
|
+
j = (i + 1) % contents.length;
|
|
96
|
+
if (j === 0) {
|
|
97
|
+
if (!options.chainAlbums) {
|
|
98
|
+
if (options.loop) {
|
|
99
|
+
return resolve(contents[j]);
|
|
100
|
+
}
|
|
101
|
+
return resolve(null); // No more music needed
|
|
102
|
+
} else {
|
|
103
|
+
// chain albums
|
|
104
|
+
if (level === 1 || !options.chainAlbums) return resolve(null); // limit of navigating treee
|
|
105
|
+
moveOn(folder, level + 1).then(function (folder2) {
|
|
106
|
+
if (folder2) {
|
|
107
|
+
kb.fetcher.load(folder2).then(function (_xhr) {
|
|
108
|
+
const contents = kb.each(folder2, ns.ldp('contains'));
|
|
109
|
+
if (contents.length === 0) return resolve(null);
|
|
110
|
+
contents.sort();
|
|
111
|
+
console.log('New Album: ' + folder2);
|
|
112
|
+
return resolve(contents[0]); // Start off new album
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
return resolve(contents[j]);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
} // for
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
const endedListener = function (event) {
|
|
126
|
+
const current = kb.sym(event.target.getAttribute('src'));
|
|
127
|
+
if (!options.chain) return;
|
|
128
|
+
const tryNext = function (cur) {
|
|
129
|
+
const current = cur;
|
|
130
|
+
moveOn(current).then(function (next) {
|
|
131
|
+
if (!next) {
|
|
132
|
+
console.log('No successor to ' + current);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!looksRedundant(next)) {
|
|
136
|
+
console.log('Moving on to ' + next);
|
|
137
|
+
guessNames(next);
|
|
138
|
+
controlRow.appendChild(audioControl(next, true)); // Force autoplay
|
|
139
|
+
controlRow.removeChild(event.target);
|
|
140
|
+
} else {
|
|
141
|
+
console.log('Ignoring redundant ' + next);
|
|
142
|
+
tryNext(next);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
tryNext(current);
|
|
147
|
+
};
|
|
148
|
+
const audioControl = function (song, autoplay) {
|
|
149
|
+
const audio = dom.createElement('audio');
|
|
150
|
+
audio.setAttribute('controls', 'yes');
|
|
151
|
+
// get audio with authenticated fetch
|
|
152
|
+
kb.fetcher._fetch(song.uri).then(function (response) {
|
|
153
|
+
return response.blob();
|
|
154
|
+
}).then(function (myBlob) {
|
|
155
|
+
const objectURL = URL.createObjectURL(myBlob);
|
|
156
|
+
audio.setAttribute('src', objectURL); // w640 h480 //
|
|
157
|
+
});
|
|
158
|
+
if (autoplay) {
|
|
159
|
+
audio.setAttribute('autoplay', 'autoplay'); // Make this a personal preference
|
|
160
|
+
}
|
|
161
|
+
audio.addEventListener('ended', endedListener, false);
|
|
162
|
+
return audio;
|
|
163
|
+
};
|
|
164
|
+
const div = dom.createElement('div');
|
|
165
|
+
const table = div.appendChild(dom.createElement('table'));
|
|
166
|
+
const labelStyle = 'padding: 0.3em; color:white; background-color: black;';
|
|
167
|
+
const artistRow = table.appendChild(dom.createElement('tr'));
|
|
168
|
+
artistRow.style.cssText = labelStyle;
|
|
169
|
+
const albumRow = table.appendChild(dom.createElement('tr'));
|
|
170
|
+
albumRow.style.cssText = labelStyle;
|
|
171
|
+
const trackRow = table.appendChild(dom.createElement('tr'));
|
|
172
|
+
trackRow.style.cssText = labelStyle;
|
|
173
|
+
const controlRow = table.appendChild(dom.createElement('tr'));
|
|
174
|
+
guessNames(subject);
|
|
175
|
+
controlRow.appendChild(audioControl(subject, options.autoplay));
|
|
176
|
+
if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {
|
|
177
|
+
kb.fetcher.load(subject.dir()); // Prefetch enclosing @@ or playlist
|
|
178
|
+
}
|
|
179
|
+
return div;
|
|
180
|
+
}
|
|
181
|
+
}; // ends
|
|
182
|
+
//# sourceMappingURL=audioPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioPane.js","names":["UI","_interopRequireWildcard","require","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","_default","exports","icon","icons","iconBase","name","label","subject","context","kb","session","store","typeURIs","findTypeURIs","prefix","Util","mediaTypeClass","uri","split","startsWith","render","dom","options","autoplay","chain","chainAlbums","loop","removeExtension","str","dot","lastIndexOf","slash","slice","looksRedundant","x","folder","any","undefined","ldp","contents","each","length","thisName","k","otherName","endsWith","guessNames","a","decode","decodeURIComponent","artistRow","textContent","albumRow","trackRow","moveOn","current","level","Promise","resolve","dir","fetcher","load","then","_xhr","j","sort","folder2","console","log","endedListener","event","sym","target","getAttribute","tryNext","cur","next","controlRow","appendChild","audioControl","removeChild","song","audio","createElement","setAttribute","_fetch","response","blob","myBlob","objectURL","URL","createObjectURL","addEventListener","div","table","labelStyle","style","cssText","holds"],"sources":["../../src/audio/audioPane.js"],"sourcesContent":["/* Single audio play Pane\n **\n */\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nconst ns = UI.ns\n\nexport default {\n icon: UI.icons.iconBase + 'noun_534313.svg',\n\n name: 'audio',\n\n // Does the subject deserve an audio play pane?\n label: function (subject, context) {\n const kb = context.session.store\n const typeURIs = kb.findTypeURIs(subject)\n\n const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return 'Play audio'\n }\n return null\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n const options = {\n autoplay: false,\n chain: true,\n chainAlbums: true,\n loop: false\n }\n\n const removeExtension = function (str) {\n const dot = str.lastIndexOf('.')\n if (dot < 0) return str // if any\n const slash = str.lastIndexOf('/')\n if (dot < slash) return str\n return str.slice(0, dot)\n }\n\n // True if there is another file like song.mp3 when this is \"song 1.mp3\"\n // or this is song.m4a\n //\n const looksRedundant = function (x) {\n const folder = kb.any(undefined, ns.ldp('contains'), x)\n if (!folder) return false\n const contents = kb.each(folder, ns.ldp('contains'))\n if (contents.length < 2) return false\n const thisName = x.uri\n for (let k = 0; k < contents.length; k++) {\n const otherName = contents[k].uri\n if (\n thisName.length > otherName.length &&\n thisName.startsWith(removeExtension(otherName))\n ) {\n return true\n }\n if (\n thisName.endsWith('.m4a') &&\n otherName.endsWith('.mp3') &&\n removeExtension(thisName) === removeExtension(otherName)\n ) {\n return true\n }\n }\n return false\n }\n\n // Alternative methods could include:\n // Accesing metadata in the audio contol, or paring the audio file\n const guessNames = function (x) {\n const a = x.uri.split('/').slice(-3) // Hope artist, album, track\n const decode = function (str) {\n try {\n return decodeURIComponent(str)\n } catch (e) {\n return str\n }\n }\n artistRow.textContent = decode(a[0])\n albumRow.textContent = decode(a[1])\n trackRow.textContent = decode(removeExtension(a[2]))\n }\n\n const moveOn = function (current, level) {\n return new Promise(function (resolve) {\n level = level || 0\n if (!options.chain) return resolve(null)\n // Ideally navigate graph else cheat with URI munging:\n const folder =\n kb.any(undefined, ns.ldp('contains'), current) || current.dir()\n if (!folder) return resolve(null)\n kb.fetcher.load(folder).then(function (_xhr) {\n const contents = kb.each(folder, ns.ldp('contains')) // @@ load if not loaded\n // if (contents.length < 2) return resolve(null) NO might move on from 1-track album\n let j\n contents.sort() // sort by URI which hopefully will get tracks in order\n for (let i = 0; i < contents.length; i++) {\n if (current.uri === contents[i].uri) {\n j = (i + 1) % contents.length\n if (j === 0) {\n if (!options.chainAlbums) {\n if (options.loop) {\n return resolve(contents[j])\n }\n return resolve(null) // No more music needed\n } else {\n // chain albums\n if (level === 1 || !options.chainAlbums) return resolve(null) // limit of navigating treee\n moveOn(folder, level + 1).then(function (folder2) {\n if (folder2) {\n kb.fetcher.load(folder2).then(function (_xhr) {\n const contents = kb.each(folder2, ns.ldp('contains'))\n if (contents.length === 0) return resolve(null)\n contents.sort()\n console.log('New Album: ' + folder2)\n return resolve(contents[0]) // Start off new album\n })\n }\n })\n }\n } else {\n return resolve(contents[j])\n }\n }\n } // for\n })\n })\n }\n const endedListener = function (event) {\n const current = kb.sym(event.target.getAttribute('src'))\n if (!options.chain) return\n const tryNext = function (cur) {\n const current = cur\n moveOn(current).then(function (next) {\n if (!next) {\n console.log('No successor to ' + current)\n return\n }\n if (!looksRedundant(next)) {\n console.log('Moving on to ' + next)\n guessNames(next)\n controlRow.appendChild(audioControl(next, true)) // Force autoplay\n controlRow.removeChild(event.target)\n } else {\n console.log('Ignoring redundant ' + next)\n tryNext(next)\n }\n })\n }\n tryNext(current)\n }\n\n const audioControl = function (song, autoplay) {\n const audio = dom.createElement('audio')\n audio.setAttribute('controls', 'yes')\n // get audio with authenticated fetch\n kb.fetcher._fetch(song.uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n audio.setAttribute('src', objectURL) // w640 h480 //\n })\n\n if (autoplay) {\n audio.setAttribute('autoplay', 'autoplay') // Make this a personal preference\n }\n audio.addEventListener('ended', endedListener, false)\n return audio\n }\n\n const div = dom.createElement('div')\n const table = div.appendChild(dom.createElement('table'))\n const labelStyle = 'padding: 0.3em; color:white; background-color: black;'\n const artistRow = table.appendChild(dom.createElement('tr'))\n artistRow.style.cssText = labelStyle\n const albumRow = table.appendChild(dom.createElement('tr'))\n albumRow.style.cssText = labelStyle\n const trackRow = table.appendChild(dom.createElement('tr'))\n trackRow.style.cssText = labelStyle\n const controlRow = table.appendChild(dom.createElement('tr'))\n guessNames(subject)\n controlRow.appendChild(audioControl(subject, options.autoplay))\n\n if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {\n kb.fetcher.load(subject.dir()) // Prefetch enclosing @@ or playlist\n }\n\n return div\n }\n}\n\n// ends\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.classInstancePane = void 0;
|
|
7
|
+
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
|
+
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
/* Class member Pane
|
|
11
|
+
**
|
|
12
|
+
** This outline pane lists the members of a class
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const ns = UI.ns;
|
|
16
|
+
const classInstancePane = exports.classInstancePane = {
|
|
17
|
+
icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',
|
|
18
|
+
name: 'classInstance',
|
|
19
|
+
// Create a new folder in a Solid system,
|
|
20
|
+
|
|
21
|
+
audience: [ns.solid('PowerUser')],
|
|
22
|
+
label: function (subject, context) {
|
|
23
|
+
const kb = context.session.store;
|
|
24
|
+
const n = kb.each(undefined, ns.rdf('type'), subject).length;
|
|
25
|
+
if (n > 0) return 'List (' + n + ')'; // Show how many in hover text
|
|
26
|
+
return null; // Suppress pane otherwise
|
|
27
|
+
},
|
|
28
|
+
render: function (subject, context) {
|
|
29
|
+
const dom = context.dom;
|
|
30
|
+
const outliner = context.getOutliner(dom);
|
|
31
|
+
const kb = context.session.store;
|
|
32
|
+
const complain = function complain(message, color) {
|
|
33
|
+
const pre = dom.createElement('pre');
|
|
34
|
+
pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';');
|
|
35
|
+
div.appendChild(pre);
|
|
36
|
+
pre.appendChild(dom.createTextNode(message));
|
|
37
|
+
};
|
|
38
|
+
const div = dom.createElement('div');
|
|
39
|
+
div.setAttribute('class', 'instancePane');
|
|
40
|
+
div.setAttribute('style', ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em ');
|
|
41
|
+
|
|
42
|
+
// If this is a class, look for all both explicit and implicit
|
|
43
|
+
const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject);
|
|
44
|
+
if (sts.length > 0) {
|
|
45
|
+
const already = {};
|
|
46
|
+
const more = [];
|
|
47
|
+
sts.forEach(st => {
|
|
48
|
+
already[st.subject.toNT()] = st;
|
|
49
|
+
});
|
|
50
|
+
for (const nt in kb.findMembersNT(subject)) {
|
|
51
|
+
if (!already[nt]) {
|
|
52
|
+
more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)); // @@ no provenance
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (more.length) {
|
|
56
|
+
complain('There are ' + sts.length + ' explicit and ' + more.length + ' implicit members of ' + UI.utils.label(subject));
|
|
57
|
+
}
|
|
58
|
+
if (subject.sameTerm(ns.rdf('Property'))) {
|
|
59
|
+
// / Do not find all properties used as properties .. unless look at kb index
|
|
60
|
+
} else if (subject.sameTerm(ns.rdfs('Class'))) {
|
|
61
|
+
const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined);
|
|
62
|
+
const usedTypes = {};
|
|
63
|
+
uses.forEach(function (st) {
|
|
64
|
+
usedTypes[st.object] = st;
|
|
65
|
+
}); // Get unique
|
|
66
|
+
const used = [];
|
|
67
|
+
for (const i in usedTypes) {
|
|
68
|
+
used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')));
|
|
69
|
+
}
|
|
70
|
+
complain('Total of ' + uses.length + ' type statements and ' + used.length + ' unique types.');
|
|
71
|
+
}
|
|
72
|
+
if (sts.length > 10) {
|
|
73
|
+
const tr = dom.createElement('TR');
|
|
74
|
+
tr.appendChild(dom.createTextNode('' + sts.length));
|
|
75
|
+
// tr.AJAR_statement=sts[i]
|
|
76
|
+
div.appendChild(tr);
|
|
77
|
+
}
|
|
78
|
+
outliner.appendPropertyTRs(div, sts, true, function (_pred) {
|
|
79
|
+
return true;
|
|
80
|
+
});
|
|
81
|
+
if (more.length) {
|
|
82
|
+
complain('Implicit:');
|
|
83
|
+
outliner.appendPropertyTRs(div, more, true, function (_pred) {
|
|
84
|
+
return true;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return div;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
// ends
|
|
92
|
+
//# sourceMappingURL=classInstancePane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classInstancePane.js","names":["UI","_interopRequireWildcard","require","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","classInstancePane","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","kb","session","store","each","undefined","rdf","length","render","dom","outliner","getOutliner","complain","message","color","pre","createElement","setAttribute","div","appendChild","createTextNode","sts","statementsMatching","already","more","forEach","st","toNT","nt","findMembersNT","push","fromNT","utils","sameTerm","rdfs","uses","usedTypes","object","used","sym","tr","appendPropertyTRs","_pred"],"sources":["../src/classInstancePane.js"],"sourcesContent":["/* Class member Pane\n **\n ** This outline pane lists the members of a class\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\n\nexport const classInstancePane = {\n icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',\n\n name: 'classInstance',\n\n // Create a new folder in a Solid system,\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n const kb = context.session.store\n const n = kb.each(undefined, ns.rdf('type'), subject).length\n if (n > 0) return 'List (' + n + ')' // Show how many in hover text\n return null // Suppress pane otherwise\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const complain = function complain (message, color) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const div = dom.createElement('div')\n div.setAttribute('class', 'instancePane')\n div.setAttribute(\n 'style',\n ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '\n )\n\n // If this is a class, look for all both explicit and implicit\n const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject)\n if (sts.length > 0) {\n const already = {}\n const more = []\n sts.forEach(st => {\n already[st.subject.toNT()] = st\n })\n for (const nt in kb.findMembersNT(subject)) {\n if (!already[nt]) {\n more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)) // @@ no provenance\n }\n }\n if (more.length) {\n complain(\n 'There are ' +\n sts.length +\n ' explicit and ' +\n more.length +\n ' implicit members of ' +\n UI.utils.label(subject)\n )\n }\n if (subject.sameTerm(ns.rdf('Property'))) {\n // / Do not find all properties used as properties .. unless look at kb index\n } else if (subject.sameTerm(ns.rdfs('Class'))) {\n const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined)\n const usedTypes = {}\n uses.forEach(function (st) {\n usedTypes[st.object] = st\n }) // Get unique\n const used = []\n for (const i in usedTypes) {\n used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')))\n }\n complain(\n 'Total of ' +\n uses.length +\n ' type statements and ' +\n used.length +\n ' unique types.'\n )\n }\n\n if (sts.length > 10) {\n const tr = dom.createElement('TR')\n tr.appendChild(dom.createTextNode('' + sts.length))\n // tr.AJAR_statement=sts[i]\n div.appendChild(tr)\n }\n\n outliner.appendPropertyTRs(div, sts, true, function (_pred) {\n return true\n })\n\n if (more.length) {\n complain('Implicit:')\n outliner.appendPropertyTRs(div, more, true, function (_pred) {\n return true\n })\n }\n }\n\n return div\n }\n}\n// ends\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.dataContentPane = void 0;
|
|
7
|
+
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
9
|
+
/* Data content Pane
|
|
10
|
+
**
|
|
11
|
+
** This pane shows the content of a particular RDF resource
|
|
12
|
+
** or at least the RDF semantics we attribute to that resource.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// To do: - Only take data from one graph
|
|
16
|
+
// - Only do forwards not backward?
|
|
17
|
+
// - Expand automatically all the way down
|
|
18
|
+
// - original source view? Use ffox view source
|
|
19
|
+
|
|
20
|
+
const ns = UI.ns;
|
|
21
|
+
const dataContentPane = exports.dataContentPane = {
|
|
22
|
+
icon: UI.icons.originalIconBase + 'rdf_flyer.24.gif',
|
|
23
|
+
name: 'dataContents',
|
|
24
|
+
audience: [ns.solid('Developer')],
|
|
25
|
+
label: function (subject, context) {
|
|
26
|
+
if ('http://www.w3.org/2007/ont/link#ProtocolEvent' in context.session.store.findTypeURIs(subject)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const n = context.session.store.statementsMatching(undefined, undefined, undefined, subject).length;
|
|
30
|
+
if (n === 0) return null;
|
|
31
|
+
return 'Data (' + n + ')';
|
|
32
|
+
},
|
|
33
|
+
/*
|
|
34
|
+
shouldGetFocus: function(subject) {
|
|
35
|
+
return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument'))
|
|
36
|
+
},
|
|
37
|
+
*/
|
|
38
|
+
statementsAsTables: function statementsAsTables(sts, context, initialRoots) {
|
|
39
|
+
const myDocument = context.dom;
|
|
40
|
+
// const outliner = context.getOutliner(myDocument)
|
|
41
|
+
const rep = myDocument.createElement('table');
|
|
42
|
+
const sz = UI.rdf.Serializer(context.session.store);
|
|
43
|
+
const res = sz.rootSubjects(sts);
|
|
44
|
+
let roots = res.roots;
|
|
45
|
+
const subjects = res.subjects;
|
|
46
|
+
const loopBreakers = res.loopBreakers;
|
|
47
|
+
for (const x in loopBreakers) {
|
|
48
|
+
console.log('\tdataContentPane: loopbreaker:' + x);
|
|
49
|
+
}
|
|
50
|
+
const doneBnodes = {}; // For preventing looping
|
|
51
|
+
const referencedBnodes = {}; // Bnodes which need to be named alas
|
|
52
|
+
|
|
53
|
+
// The property tree for a single subject or anonymous node
|
|
54
|
+
function propertyTree(subject) {
|
|
55
|
+
// print('Proprty tree for '+subject)
|
|
56
|
+
const rep = myDocument.createElement('table');
|
|
57
|
+
let lastPred = null;
|
|
58
|
+
const sts = subjects[sz.toStr(subject)]; // relevant statements
|
|
59
|
+
if (!sts) {
|
|
60
|
+
// No statements in tree
|
|
61
|
+
rep.appendChild(myDocument.createTextNode('...')); // just empty bnode as object
|
|
62
|
+
return rep;
|
|
63
|
+
}
|
|
64
|
+
sts.sort();
|
|
65
|
+
let same = 0;
|
|
66
|
+
let predicateTD; // The cell which holds the predicate
|
|
67
|
+
for (let i = 0; i < sts.length; i++) {
|
|
68
|
+
const st = sts[i];
|
|
69
|
+
const tr = myDocument.createElement('tr');
|
|
70
|
+
if (st.predicate.uri !== lastPred) {
|
|
71
|
+
if (lastPred && same > 1) {
|
|
72
|
+
predicateTD.setAttribute('rowspan', '' + same);
|
|
73
|
+
}
|
|
74
|
+
predicateTD = myDocument.createElement('td');
|
|
75
|
+
predicateTD.setAttribute('class', 'pred');
|
|
76
|
+
const anchor = myDocument.createElement('a');
|
|
77
|
+
anchor.setAttribute('href', st.predicate.uri);
|
|
78
|
+
anchor.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
|
|
79
|
+
anchor.appendChild(myDocument.createTextNode(UI.utils.predicateLabelForXML(st.predicate)));
|
|
80
|
+
predicateTD.appendChild(anchor);
|
|
81
|
+
tr.appendChild(predicateTD);
|
|
82
|
+
lastPred = st.predicate.uri;
|
|
83
|
+
same = 0;
|
|
84
|
+
}
|
|
85
|
+
same++;
|
|
86
|
+
const objectTD = myDocument.createElement('td');
|
|
87
|
+
objectTD.appendChild(objectTree(st.object));
|
|
88
|
+
tr.appendChild(objectTD);
|
|
89
|
+
rep.appendChild(tr);
|
|
90
|
+
}
|
|
91
|
+
if (lastPred && same > 1) predicateTD.setAttribute('rowspan', '' + same);
|
|
92
|
+
return rep;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Convert a set of statements into a nested tree of tables
|
|
96
|
+
function objectTree(obj) {
|
|
97
|
+
let res, anchor;
|
|
98
|
+
switch (obj.termType) {
|
|
99
|
+
case 'NamedNode':
|
|
100
|
+
anchor = myDocument.createElement('a');
|
|
101
|
+
anchor.setAttribute('href', obj.uri);
|
|
102
|
+
anchor.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
|
|
103
|
+
anchor.appendChild(myDocument.createTextNode(UI.utils.label(obj)));
|
|
104
|
+
return anchor;
|
|
105
|
+
case 'Literal':
|
|
106
|
+
if (!obj.datatype || !obj.datatype.uri) {
|
|
107
|
+
res = myDocument.createElement('div');
|
|
108
|
+
res.setAttribute('style', 'white-space: pre-wrap;');
|
|
109
|
+
res.textContent = obj.value;
|
|
110
|
+
return res;
|
|
111
|
+
} else if (obj.datatype.uri === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral') {
|
|
112
|
+
res = myDocument.createElement('div');
|
|
113
|
+
res.setAttribute('class', 'embeddedXHTML');
|
|
114
|
+
res.innerHTML = obj.value; // Try that @@@ beware embedded dangerous code
|
|
115
|
+
return res;
|
|
116
|
+
}
|
|
117
|
+
return myDocument.createTextNode(obj.value);
|
|
118
|
+
// placeholder - could be smarter,
|
|
119
|
+
|
|
120
|
+
case 'BlankNode':
|
|
121
|
+
{
|
|
122
|
+
if (obj.toNT() in doneBnodes) {
|
|
123
|
+
// Break infinite recursion
|
|
124
|
+
referencedBnodes[obj.toNT()] = true;
|
|
125
|
+
const anchor = myDocument.createElement('a');
|
|
126
|
+
anchor.setAttribute('href', '#' + obj.toNT().slice(2));
|
|
127
|
+
anchor.setAttribute('class', 'bnodeRef');
|
|
128
|
+
anchor.textContent = '*' + obj.toNT().slice(3);
|
|
129
|
+
return anchor;
|
|
130
|
+
}
|
|
131
|
+
doneBnodes[obj.toNT()] = true; // Flag to prevent infinite recursion in propertyTree
|
|
132
|
+
const newTable = propertyTree(obj);
|
|
133
|
+
doneBnodes[obj.toNT()] = newTable; // Track where we mentioned it first
|
|
134
|
+
if (UI.utils.ancestor(newTable, 'TABLE') && UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor === 'white') {
|
|
135
|
+
newTable.style.backgroundColor = '#eee';
|
|
136
|
+
} else {
|
|
137
|
+
newTable.style.backgroundColor = 'white';
|
|
138
|
+
}
|
|
139
|
+
return newTable;
|
|
140
|
+
}
|
|
141
|
+
case 'Collection':
|
|
142
|
+
res = myDocument.createElement('table');
|
|
143
|
+
res.setAttribute('class', 'collectionAsTables');
|
|
144
|
+
for (let i = 0; i < obj.elements.length; i++) {
|
|
145
|
+
const tr = myDocument.createElement('tr');
|
|
146
|
+
res.appendChild(tr);
|
|
147
|
+
tr.appendChild(objectTree(obj.elements[i]));
|
|
148
|
+
}
|
|
149
|
+
return res;
|
|
150
|
+
case 'Graph':
|
|
151
|
+
res = context.session.paneRegistry.byName('dataContents').statementsAsTables(obj.statements, context);
|
|
152
|
+
res.setAttribute('class', 'nestedFormula');
|
|
153
|
+
return res;
|
|
154
|
+
case 'Variable':
|
|
155
|
+
res = myDocument.createTextNode('?' + obj.uri);
|
|
156
|
+
return res;
|
|
157
|
+
}
|
|
158
|
+
throw new Error('Unhandled node type: ' + obj.termType);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// roots.sort()
|
|
162
|
+
|
|
163
|
+
if (initialRoots) {
|
|
164
|
+
roots = initialRoots.concat(roots.filter(function (x) {
|
|
165
|
+
for (let i = 0; i < initialRoots.length; i++) {
|
|
166
|
+
// Max 2
|
|
167
|
+
if (x.sameTerm(initialRoots[i])) return false;
|
|
168
|
+
}
|
|
169
|
+
return true;
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
for (let i = 0; i < roots.length; i++) {
|
|
173
|
+
const tr = myDocument.createElement('tr');
|
|
174
|
+
tr.setAttribute('style', `background-color: ${i % 2 === 0 ? '#f0f0f0' : 'white'};`);
|
|
175
|
+
rep.appendChild(tr);
|
|
176
|
+
const subjectTD = myDocument.createElement('td');
|
|
177
|
+
tr.appendChild(subjectTD);
|
|
178
|
+
const TDTree = myDocument.createElement('td');
|
|
179
|
+
tr.appendChild(TDTree);
|
|
180
|
+
const root = roots[i];
|
|
181
|
+
if (root.termType === 'BlankNode') {
|
|
182
|
+
subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))); // Don't recurse!
|
|
183
|
+
} else {
|
|
184
|
+
subjectTD.appendChild(objectTree(root)); // won't have tree
|
|
185
|
+
}
|
|
186
|
+
TDTree.appendChild(propertyTree(root));
|
|
187
|
+
}
|
|
188
|
+
for (const bNT in referencedBnodes) {
|
|
189
|
+
// Add number to refer to
|
|
190
|
+
const table = doneBnodes[bNT];
|
|
191
|
+
// let tr = myDocument.createElement('tr')
|
|
192
|
+
const anchor = myDocument.createElement('a');
|
|
193
|
+
anchor.setAttribute('id', bNT.slice(2));
|
|
194
|
+
anchor.setAttribute('class', 'bnodeDef');
|
|
195
|
+
anchor.textContent = bNT.slice(3) + ')';
|
|
196
|
+
table.insertBefore(anchor, table.firstChild);
|
|
197
|
+
}
|
|
198
|
+
return rep;
|
|
199
|
+
},
|
|
200
|
+
// statementsAsTables
|
|
201
|
+
// View the data in a file in user-friendly way
|
|
202
|
+
render: function (subject, context) {
|
|
203
|
+
const myDocument = context.dom;
|
|
204
|
+
function alternativeRendering() {
|
|
205
|
+
const sz = UI.rdf.Serializer(context.session.store);
|
|
206
|
+
const res = sz.rootSubjects(sts);
|
|
207
|
+
const roots = res.roots;
|
|
208
|
+
const p = {};
|
|
209
|
+
p.render = function (s2) {
|
|
210
|
+
const div = myDocument.createElement('div');
|
|
211
|
+
div.setAttribute('class', 'withinDocumentPane');
|
|
212
|
+
const plist = kb.statementsMatching(s2, undefined, undefined, subject);
|
|
213
|
+
outliner.appendPropertyTRs(div, plist, false, function (_pred, _inverse) {
|
|
214
|
+
return true;
|
|
215
|
+
});
|
|
216
|
+
return div;
|
|
217
|
+
};
|
|
218
|
+
for (let i = 0; i < roots.length; i++) {
|
|
219
|
+
const tr = myDocument.createElement('TR');
|
|
220
|
+
const root = roots[i];
|
|
221
|
+
tr.style.verticalAlign = 'top';
|
|
222
|
+
const td = outliner.outlineObjectTD(root, undefined, tr);
|
|
223
|
+
tr.appendChild(td);
|
|
224
|
+
div.appendChild(tr);
|
|
225
|
+
outliner.outlineExpand(td, root, {
|
|
226
|
+
pane: p
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function mainRendering() {
|
|
231
|
+
const initialRoots = []; // Ordering: start with stuff about this doc
|
|
232
|
+
if (kb.holds(subject, undefined, undefined, subject)) {
|
|
233
|
+
initialRoots.push(subject);
|
|
234
|
+
}
|
|
235
|
+
// Then about the primary topic of the document if any
|
|
236
|
+
const ps = kb.any(subject, UI.ns.foaf('primaryTopic'), undefined, subject);
|
|
237
|
+
if (ps) initialRoots.push(ps);
|
|
238
|
+
div.appendChild(context.session.paneRegistry.byName('dataContents').statementsAsTables(sts, context, initialRoots));
|
|
239
|
+
}
|
|
240
|
+
const outliner = context.getOutliner(myDocument);
|
|
241
|
+
const kb = context.session.store;
|
|
242
|
+
const div = myDocument.createElement('div');
|
|
243
|
+
div.setAttribute('class', 'dataContentPane');
|
|
244
|
+
// Because of smushing etc, this will not be a copy of the original source
|
|
245
|
+
// We could instead either fetch and re-parse the source,
|
|
246
|
+
// or we could keep all the pre-smushed triples.
|
|
247
|
+
const sts = kb.statementsMatching(undefined, undefined, undefined, subject); // @@ slow with current store!
|
|
248
|
+
|
|
249
|
+
// eslint-disable-next-line no-constant-condition
|
|
250
|
+
if (false) {
|
|
251
|
+
// keep code
|
|
252
|
+
alternativeRendering();
|
|
253
|
+
} else {
|
|
254
|
+
mainRendering();
|
|
255
|
+
}
|
|
256
|
+
return div;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
//# sourceMappingURL=dataContentPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataContentPane.js","names":["UI","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","dataContentPane","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","session","store","findTypeURIs","statementsMatching","undefined","length","statementsAsTables","sts","initialRoots","myDocument","dom","rep","createElement","sz","rdf","Serializer","res","rootSubjects","roots","subjects","loopBreakers","x","console","log","doneBnodes","referencedBnodes","propertyTree","lastPred","toStr","appendChild","createTextNode","sort","same","predicateTD","st","tr","predicate","uri","setAttribute","anchor","addEventListener","widgets","openHrefInOutlineMode","utils","predicateLabelForXML","objectTD","objectTree","object","obj","termType","datatype","textContent","value","innerHTML","toNT","slice","newTable","ancestor","style","backgroundColor","elements","paneRegistry","byName","statements","Error","concat","filter","sameTerm","subjectTD","TDTree","root","bNT","table","insertBefore","firstChild","render","alternativeRendering","p","s2","div","plist","kb","outliner","appendPropertyTRs","_pred","_inverse","verticalAlign","td","outlineObjectTD","outlineExpand","pane","mainRendering","holds","push","ps","any","foaf","getOutliner"],"sources":["../src/dataContentPane.js"],"sourcesContent":["/* Data content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource.\n */\n\n// To do: - Only take data from one graph\n// - Only do forwards not backward?\n// - Expand automatically all the way down\n// - original source view? Use ffox view source\n\nimport * as UI from 'solid-ui'\nconst ns = UI.ns\n\nexport const dataContentPane = {\n icon: UI.icons.originalIconBase + 'rdf_flyer.24.gif',\n\n name: 'dataContents',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n context.session.store.findTypeURIs(subject)\n ) {\n return null\n }\n const n = context.session.store.statementsMatching(\n undefined,\n undefined,\n undefined,\n subject\n ).length\n if (n === 0) return null\n return 'Data (' + n + ')'\n },\n /*\n shouldGetFocus: function(subject) {\n return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument'))\n },\n*/\n statementsAsTables: function statementsAsTables (sts, context, initialRoots) {\n const myDocument = context.dom\n // const outliner = context.getOutliner(myDocument)\n const rep = myDocument.createElement('table')\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n let roots = res.roots\n const subjects = res.subjects\n const loopBreakers = res.loopBreakers\n for (const x in loopBreakers) {\n console.log('\\tdataContentPane: loopbreaker:' + x)\n }\n const doneBnodes = {} // For preventing looping\n const referencedBnodes = {} // Bnodes which need to be named alas\n\n // The property tree for a single subject or anonymous node\n function propertyTree (subject) {\n // print('Proprty tree for '+subject)\n const rep = myDocument.createElement('table')\n let lastPred = null\n const sts = subjects[sz.toStr(subject)] // relevant statements\n if (!sts) {\n // No statements in tree\n rep.appendChild(myDocument.createTextNode('...')) // just empty bnode as object\n return rep\n }\n sts.sort()\n let same = 0\n let predicateTD // The cell which holds the predicate\n for (let i = 0; i < sts.length; i++) {\n const st = sts[i]\n const tr = myDocument.createElement('tr')\n if (st.predicate.uri !== lastPred) {\n if (lastPred && same > 1) {\n predicateTD.setAttribute('rowspan', '' + same)\n }\n predicateTD = myDocument.createElement('td')\n predicateTD.setAttribute('class', 'pred')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', st.predicate.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(\n myDocument.createTextNode(\n UI.utils.predicateLabelForXML(st.predicate)\n )\n )\n predicateTD.appendChild(anchor)\n tr.appendChild(predicateTD)\n lastPred = st.predicate.uri\n same = 0\n }\n same++\n const objectTD = myDocument.createElement('td')\n objectTD.appendChild(objectTree(st.object))\n tr.appendChild(objectTD)\n rep.appendChild(tr)\n }\n if (lastPred && same > 1) predicateTD.setAttribute('rowspan', '' + same)\n return rep\n }\n\n // Convert a set of statements into a nested tree of tables\n function objectTree (obj) {\n let res, anchor\n switch (obj.termType) {\n case 'NamedNode':\n anchor = myDocument.createElement('a')\n anchor.setAttribute('href', obj.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(myDocument.createTextNode(UI.utils.label(obj)))\n return anchor\n\n case 'Literal':\n if (!obj.datatype || !obj.datatype.uri) {\n res = myDocument.createElement('div')\n res.setAttribute('style', 'white-space: pre-wrap;')\n res.textContent = obj.value\n return res\n } else if (\n obj.datatype.uri ===\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'\n ) {\n res = myDocument.createElement('div')\n res.setAttribute('class', 'embeddedXHTML')\n res.innerHTML = obj.value // Try that @@@ beware embedded dangerous code\n return res\n }\n return myDocument.createTextNode(obj.value) // placeholder - could be smarter,\n\n case 'BlankNode': {\n if (obj.toNT() in doneBnodes) {\n // Break infinite recursion\n referencedBnodes[obj.toNT()] = true\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', '#' + obj.toNT().slice(2))\n anchor.setAttribute('class', 'bnodeRef')\n anchor.textContent = '*' + obj.toNT().slice(3)\n return anchor\n }\n doneBnodes[obj.toNT()] = true // Flag to prevent infinite recursion in propertyTree\n const newTable = propertyTree(obj)\n doneBnodes[obj.toNT()] = newTable // Track where we mentioned it first\n if (\n UI.utils.ancestor(newTable, 'TABLE') &&\n UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor ===\n 'white'\n ) {\n newTable.style.backgroundColor = '#eee'\n } else {\n newTable.style.backgroundColor = 'white'\n }\n return newTable\n }\n case 'Collection':\n res = myDocument.createElement('table')\n res.setAttribute('class', 'collectionAsTables')\n for (let i = 0; i < obj.elements.length; i++) {\n const tr = myDocument.createElement('tr')\n res.appendChild(tr)\n tr.appendChild(objectTree(obj.elements[i]))\n }\n return res\n case 'Graph':\n res = context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(obj.statements, context)\n res.setAttribute('class', 'nestedFormula')\n return res\n case 'Variable':\n res = myDocument.createTextNode('?' + obj.uri)\n return res\n }\n throw new Error('Unhandled node type: ' + obj.termType)\n }\n\n // roots.sort()\n\n if (initialRoots) {\n roots = initialRoots.concat(\n roots.filter(function (x) {\n for (let i = 0; i < initialRoots.length; i++) {\n // Max 2\n if (x.sameTerm(initialRoots[i])) return false\n }\n return true\n })\n )\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('tr')\n tr.setAttribute('style', `background-color: ${i % 2 === 0 ? '#f0f0f0' : 'white'};`)\n rep.appendChild(tr)\n const subjectTD = myDocument.createElement('td')\n tr.appendChild(subjectTD)\n const TDTree = myDocument.createElement('td')\n tr.appendChild(TDTree)\n const root = roots[i]\n if (root.termType === 'BlankNode') {\n subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))) // Don't recurse!\n } else {\n subjectTD.appendChild(objectTree(root)) // won't have tree\n }\n TDTree.appendChild(propertyTree(root))\n }\n for (const bNT in referencedBnodes) {\n // Add number to refer to\n const table = doneBnodes[bNT]\n // let tr = myDocument.createElement('tr')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('id', bNT.slice(2))\n anchor.setAttribute('class', 'bnodeDef')\n anchor.textContent = bNT.slice(3) + ')'\n table.insertBefore(anchor, table.firstChild)\n }\n return rep\n }, // statementsAsTables\n // View the data in a file in user-friendly way\n render: function (subject, context) {\n const myDocument = context.dom\n\n function alternativeRendering () {\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n const roots = res.roots\n const p = {}\n p.render = function (s2) {\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'withinDocumentPane')\n const plist = kb.statementsMatching(s2, undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, false, function (\n _pred,\n _inverse\n ) {\n return true\n })\n return div\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('TR')\n const root = roots[i]\n tr.style.verticalAlign = 'top'\n const td = outliner.outlineObjectTD(root, undefined, tr)\n tr.appendChild(td)\n div.appendChild(tr)\n outliner.outlineExpand(td, root, { pane: p })\n }\n }\n\n function mainRendering () {\n const initialRoots = [] // Ordering: start with stuff about this doc\n if (kb.holds(subject, undefined, undefined, subject)) {\n initialRoots.push(subject)\n }\n // Then about the primary topic of the document if any\n const ps = kb.any(subject, UI.ns.foaf('primaryTopic'), undefined, subject)\n if (ps) initialRoots.push(ps)\n div.appendChild(\n context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(sts, context, initialRoots)\n )\n }\n\n const outliner = context.getOutliner(myDocument)\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'dataContentPane')\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store!\n\n // eslint-disable-next-line no-constant-condition\n if (false) { // keep code\n alternativeRendering()\n } else {\n mainRendering()\n }\n return div\n }\n}\n"],"mappings":"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","ignoreList":[]}
|