UNPKG

solid-panes

Version:

Solid-compatible Panes: applets and views for the mashlib and databrowser

52 lines (45 loc) 1.66 kB
// Format an array of RDF statements as an HTML table. // // This can operate in one of three modes: when the class of object is given // or when the source document from which data is taken is given, // or if a prepared query object is given. // (In principle it could operate with neither class nor document // given but typically // there would be too much data.) // When the tableClass is not given, it looks for common classes in the data, // and gives the user the option. // // 2008 Written, Ilaria Liccardi // 2014 core functionality now in common/table.js -timbl // /////////////////////////////////////////////////////////////////// // Table view pane -- view of a class/ var UI = require('solid-ui') module.exports = { icon: UI.icons.originalIconBase + 'table.png', name: 'tableOfClass', label: function (subject, context) { const store = context.session.store // if (!store.holds(subject, UI.ns.rdf('type'),UI.ns.rdfs('Class'))) return null if (!store.any(undefined, UI.ns.rdf('type'), subject)) { return null } var n = store.statementsMatching(undefined, UI.ns.rdf('type'), subject) .length if (n === 0) { // None, suppress pane return null } if (n > 15) { // @@ At the moment this pane can be slow with too many @@ fixme by using limits return null } return UI.utils.label(subject) + ' table' }, render: function (subject, context) { const myDocument = context.dom var div = myDocument.createElement('div') div.setAttribute('class', 'tablePane') div.appendChild(UI.table(myDocument, { tableClass: subject })) return div } }