From cb253dd1665460eb44a5a634c764c519a8c765f3 Mon Sep 17 00:00:00 2001 From: Tim Berners-Lee Date: Thu, 30 Jul 2020 09:48:34 -0400 Subject: [PATCH 1/8] Add Open/Closed setting on user-defined states --- trackerSettingsForm.js | 10 +++++++++- trackerSettingsForm.ttl | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/trackerSettingsForm.js b/trackerSettingsForm.js index 69664a0..a6ff9cf 100644 --- a/trackerSettingsForm.js +++ b/trackerSettingsForm.js @@ -80,6 +80,10 @@ export const trackerSettingsFormText = ` # [ a ui:Multiple; ui:property rdfs:subClassOf; ui:reverse true; ui:part core:StateForm ] ) . + core:OpenOrClosed a rdfs:Class; rdfs:label "OpenOrClosed". + wf:Open rdfs:subClassOf core:OpenOrClosed. + wf:Closed rdfs:subClassOf core:OpenOrClosed. + core:StateForm a ui:Form; dct:title "Form for one state"; ui:parts ( [ a :SingleLineTextField; @@ -87,8 +91,12 @@ export const trackerSettingsFormText = ` :maxLength "128"; :property rdfs:label; :size "40" ] + + [ a ui:Classifier; :label "open or closed"; ui:category core:OpenOrClosed; + ui:property rdfs:subClassOf; ] # ui:reverse true --no + [ a :ColorField; :label "Background color"; :property :backgroundColor ] - # @@ add icon for state + # @@ add icon for state? ). diff --git a/trackerSettingsForm.ttl b/trackerSettingsForm.ttl index afc5a4e..6069169 100644 --- a/trackerSettingsForm.ttl +++ b/trackerSettingsForm.ttl @@ -79,6 +79,10 @@ # [ a ui:Multiple; ui:property rdfs:subClassOf; ui:reverse true; ui:part core:StateForm ] ) . + core:OpenOrClosed a rdfs:Class; rdfs:label "OpenOrClosed". + wf:Open rdfs:subClassOf core:OpenOrClosed. + wf:Closed rdfs:subClassOf core:OpenOrClosed. + core:StateForm a ui:Form; dct:title "Form for one state"; ui:parts ( [ a :SingleLineTextField; @@ -86,8 +90,12 @@ :maxLength "128"; :property rdfs:label; :size "40" ] + + [ a ui:Classifier; :label "open or closed"; ui:category core:OpenOrClosed; + ui:property rdfs:subClassOf; ] # ui:reverse true --no + [ a :ColorField; :label "Background color"; :property :backgroundColor ] - # @@ add icon for state + # @@ add icon for state? ). From 00710555d29b9e93a86cc66ef14c1b007300c0c8 Mon Sep 17 00:00:00 2001 From: Tim Berners-Lee Date: Thu, 30 Jul 2020 09:53:41 -0400 Subject: [PATCH 2/8] refresh logic and button to fix config file consistency - bit of a kludge --- Makefile | 4 +- issue.js | 32 ++++-------- issuePane.js | 139 ++++++++++++++++++++++++++++++--------------------- 3 files changed, 94 insertions(+), 81 deletions(-) diff --git a/Makefile b/Makefile index d497d31..74e9155 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ # Wrap TTL files into JS files for bundling with library -,all : wf.js trackerSettingsForm.js trackerInstancesForm.js ui.js +# was trackerInstancesForm.js + +,all : wf.js trackerSettingsForm.js ui.js #individualForm.js : individualForm.ttl # (echo 'module.exports = `' ; cat individualForm.ttl; echo '`') > individualForm.js diff --git a/issue.js b/issue.js index 1dfe133..1c56f55 100644 --- a/issue.js +++ b/issue.js @@ -39,6 +39,7 @@ export function renderIssueCard (issue, context) { var backgroundColor = getBackgroundColor() || 'white' card.style.backgroundColor = backgroundColor editButton.style.backgroundColor = backgroundColor // Override white from style sheet + widgets.setImage(img, issue) // react to a change of class of the object } const dom = context.dom const uncategorized = !getBackgroundColor() // This is a suspect issue. Prompt to delete it @@ -52,7 +53,8 @@ export function renderIssueCard (issue, context) { card.style = 'border-radius: 0.4em; border: 0.05em solid grey; margin: 0.3em;' const img = card.firstChild.firstChild.firstChild.firstChild // div/table/tr/td/img - img.setAttribute('src', icons.iconBase + 'noun_Danger_1259514.svg') // override + // img.setAttribute('src', icons.iconBase + 'noun_Danger_1259514.svg') // override + // Add a button for viewing the whole issue in overlay const buttonsCell = card.firstChild.firstChild.children[2] // right hand part of card const editButton = widgets.button(dom, icons.iconBase + 'noun_253504.svg', 'edit', async _event => { @@ -262,22 +264,6 @@ export function renderIssue (issue, context) { complainIfBad ) - // Descriptions can be long and are stored local to the issue - /* - issueDiv.appendChild( - widgets.makeDescription( - dom, - kb, - issue, - ns.wf('description'), - store, - function (ok, body) { - if (ok) setModifiedDate(store, kb, store) - else console.log('Failed to change description:\n' + body) - } - ) - ) */ - // Assigned to whom? var assignments = kb.statementsMatching(issue, ns.wf('assignee')) @@ -298,11 +284,11 @@ export function renderIssue (issue, context) { async function getPossibleAssignees () { var devs = [] - var devGroups = kb.each(issue, ns.wf('assigneeGroup')) + var devGroups = kb.each(tracker, ns.wf('assigneeGroup')) for (let i = 0; i < devGroups.length; i++) { const group = devGroups[i] - await kb.fetcher.load() - devs = devs.concat(kb.each(group, ns.vcard('member'))) + await kb.fetcher.load(group) + devs = devs.concat(kb.each(group, ns.vcard('hasMember'))) } // Anyone who is a developer of any project which uses this tracker var proj = kb.any(null, ns.doap('bug-database'), tracker) // What project? @@ -321,9 +307,9 @@ export function renderIssue (issue, context) { getPossibleAssignees().then(devs => { if (devs.length) { - devs.map(function (person) { - kb.fetcher.lookUpThing(person) - }) // best effort async for names etc + // devs.map(function (person) { + // kb.fetcher.lookUpThing(person) + // }) // best effort async for names etc var opts = { // 'mint': '** Add new person **', nullLabel: '(unassigned)' diff --git a/issuePane.js b/issuePane.js index 7171cb4..850954e 100644 --- a/issuePane.js +++ b/issuePane.js @@ -94,13 +94,13 @@ export default { try { await updateMany([], ins) } catch (err) { - return UI.widgets.complain(context, 'Error writing tracker configuration: ' + err) + return widgets.complain(context, 'Error writing tracker configuration: ' + err) } /* try { await kb.updater.updateMany([], kb.statementsMatching(undefined, undefined, undefined, stateStore)) } catch (err) { - return UI.widgets.complain(context, 'Error writing tracker state file: ' + err) + return widgets.complain(context, 'Error writing tracker state file: ' + err) } */ const dom = context.dom @@ -118,15 +118,21 @@ export default { }, render: function (subject, context) { + function refreshPane () { + for (const ele of refreshables) { + widgets.refreshTree(ele) + } + } const dom = context.dom - var paneDiv = dom.createElement('div') context.paneDiv = paneDiv paneDiv.setAttribute('class', 'issuePane') + var refreshables = [] // Separate of widgets to be refreshed + paneDiv.refresh = refreshPane function complain (message) { console.warn(message) - paneDiv.appendChild(UI.widgets.errorMessageBlock(dom, message)) + paneDiv.appendChild(widgets.errorMessageBlock(dom, message)) } function complainIfBad (ok, message) { @@ -137,50 +143,63 @@ export default { /** Infer subclass from disjoint Union ** - ** This is would not be needed if our quey language - ** allowed is to query ardf Collection membership. + ** This is would not be needed if our query language + ** allowed is to query rdf Collection membership. */ - async function fixSubClasses (kb, tracker) { - async function checkOneSuperclass (klass) { - const collection = kb.any(klass, ns.owl('disjointUnionOf'), null, doc) + function checkSubClasses (kb, tracker) { + function checkOneSuperclass (klass) { + const collection = kb.any(klass, ns.owl('disjointUnionOf'), null, klass.doc()) if (!collection) throw new Error(`Classification ${klass} has no disjointUnionOf`) if (!collection.elements) throw new Error(`Classification ${klass} has no array`) const needed = new Set(collection.elements.map(x => x.uri)) - const existing = new Set(kb.each(null, ns.rdfs('subClassOf'), klass, doc) + const existing = new Set(kb.each(null, ns.rdfs('subClassOf'), klass, klass.doc()) .map(x => x.uri)) for (const sub of existing) { if (!needed.has(sub)) { - deletables.push($rdf.st(kb.sym(sub), ns.rdfs('subClassOf'), klass, doc)) + deletables.push($rdf.st(kb.sym(sub), ns.rdfs('subClassOf'), klass, klass.doc())) } } for (const sub of needed) { if (!existing.has(sub)) { - insertables.push($rdf.st(kb.sym(sub), ns.rdfs('subClassOf'), klass, doc)) + insertables.push($rdf.st(kb.sym(sub), ns.rdfs('subClassOf'), klass, klass.doc())) } } } const doc = tracker.doc() - const states = kb.any(tracker, ns.wf('issueClass')) - var cats = kb.each(tracker, ns.wf('issueCategory')) + const states = kb.any(tracker, ns.wf('issueClass'), null, doc) + var cats = kb.each(tracker, ns.wf('issueCategory'), null, doc) var insertables = [] var deletables = [] cats.push(states) for (const klass of cats) { - await checkOneSuperclass(klass) + checkOneSuperclass(klass) } - const damage = insertables.length + deletables.length - if (damage) { - alert(`Internal error: s${damage} subclasses inconsistences!`) - /* - if (confirm(`Fix ${damage} inconsistent subclasses in tracker config?`)) { - await kb.updater.update(deletables, insertables) - */ + // const damage = insertables.length + deletables.length + return [deletables, insertables] + } + + async function subClassFixButton (kb, tracker) { + const [deletables, insertables] = checkSubClasses(kb, tracker) + const button = widgets.button(dom, UI.icons.iconBase + 'noun_344563.svg', 'Adjust', async () => { + const [deletables, insertables] = checkSubClasses(kb, tracker) + try { + await updater.update(deletables, insertables) + alert('(Config file adjusted)') + } catch (err) { + const msg = 'Config file cant be adjusted: ' + err + alert(msg) + console.error(msg) + } + }) + if (deletables.length === 0 && insertables.length === 0) { + button.setAttribute('disabled', 'yes') } + return button } /** /////////////////////////// Board */ - function renderBoard (tracker, klass) { + async function renderBoard (tracker, klass) { const states = kb.any(tracker, ns.wf('issueClass')) klass = klass || states // default to states const doingStates = klass.sameTerm(states) @@ -210,9 +229,11 @@ export default { [$rdf.st(issue, ns.rdf('type'), currentState, stateStore)], [$rdf.st(issue, ns.rdf('type'), newState, stateStore)]) } catch (err) { - UI.widgets.complain(context, 'Unable to change issue state: ' + err) + widgets.complain(context, 'Unable to change issue state: ' + err) + return } boardDiv.refresh() // reorganize board to match the new reality + paneDiv.refresh() // Propagate up to whole pane in fact } function isOpen (issue) { @@ -242,12 +263,12 @@ export default { alert(err) return } - UI.widgets.refreshTree(tableDiv) + widgets.refreshTree(tableDiv) }) return refreshButton } - function renderTable (tracker) { + async function renderTable (tracker) { function newOptionalClause () { var clause = new $rdf.IndexedFormula() query.pat.optional.push(clause) @@ -345,7 +366,7 @@ export default { return creationDiv } - function renderInstances (theClass) { + async function renderInstances (theClass) { const instancesDiv = dom.createElement('div') var context = { dom, div: instancesDiv, noun: 'tracker' } UI.authn.registrationList(context, { public: true, private: true, type: theClass }).then(_context2 => { @@ -360,7 +381,7 @@ export default { }) return instancesDiv } - function renderSettings (tracker) { + async function renderSettings (tracker) { const settingsDiv = dom.createElement('div') // A registration control allows the to record this tracker in their type index var context = { dom, div: settingsDiv, noun: 'tracker' } @@ -371,26 +392,30 @@ export default { widgets.appendForm(dom, settingsDiv, {}, tracker, settingsForm, tracker.doc(), complainIfBad) }) + const fixButton = await subClassFixButton(kb, tracker) + settingsDiv.append(fixButton) return settingsDiv } - - function renderTabsTableAndBoard () { - function renderMain (ele, object) { + /* Renderthe tab system + */ + async function renderTabsTableAndBoard () { + async function renderMain (ele, object) { ele.innerHTML = '' // Clear out "loading message" if (object.sameTerm(boardView)) { - ele.appendChild(renderBoard(tracker)) + ele.appendChild(await renderBoard(tracker)) } else if (object.sameTerm(tableView)) { - ele.appendChild(renderTable(tracker)) + ele.appendChild(await renderTable(tracker)) } else if (object.sameTerm(settingsView)) { - ele.appendChild(renderSettings(tracker)) + ele.appendChild(await renderSettings(tracker)) } else if (object.sameTerm(instancesView)) { - ele.appendChild(renderInstances(ns.wf('Tracker'))) + ele.appendChild(await renderInstances(ns.wf('Tracker'))) } else if ((kb.holds(tracker, ns.wf('issueCategory'), object)) || (kb.holds(tracker, ns.wf('issueClass'), object))) { - ele.appendChild(renderBoard(tracker, object)) + ele.appendChild(await renderBoard(tracker, object)) } else { throw new Error('Unexpected tab type: ' + object) } + refreshables.push(ele.lastChild) } const states = kb.any(tracker, ns.wf('issueClass')) var items = [instancesView, tableView, states] @@ -411,14 +436,14 @@ export default { async function renderTracker () { function showNewIssue (issue) { - UI.widgets.refreshTree(paneDiv) + widgets.refreshTree(paneDiv) exposeOverlay(issue, context) b.disabled = false // https://stackoverflow.com/questions/41176582/enable-disable-a-button-in-pure-javascript } tracker = subject try { - await fixSubClasses(kb, tracker) + await checkSubClasses(kb, tracker) } catch (err) { console.log('@@@ Error fixing subclasses in config: ' + err) } @@ -462,24 +487,24 @@ export default { // Table of issues - when we have the main issue list // We also need the ontology loaded // - context.session.store.fetcher - .load([stateStore]) - .then(function (_xhrs) { - const tableDiv = renderTabsTableAndBoard(tracker) - // const tableDiv = renderTable(tracker) // was - paneDiv.appendChild(tableDiv) - - if (tableDiv.refresh) { - // Refresh function - } else { - console.log('No table refresh function?!') - } - paneDiv.appendChild(newTrackerButton(subject)) - updater.addDownstreamChangeListener(stateStore, tableDiv.refresh) // Live update - }) - .catch(function (err) { - return console.log('Cannot load state store: ' + err) - }) + try { + await context.session.store.fetcher.load(stateStore) + } catch (err) { + const msg = 'Cannot load state store: ' + err + alert(msg) + return console.log(msg) + } + const tabsDiv = await renderTabsTableAndBoard(tracker) + + paneDiv.appendChild(tabsDiv) + + if (tabsDiv.refresh) { + // Refresh function + } else { + console.log('No table refresh function?!') + } + paneDiv.appendChild(newTrackerButton(subject, context)) + updater.addDownstreamChangeListener(stateStore, paneDiv.refresh) // Live update // end of Tracker instance } // render tracker @@ -531,7 +556,7 @@ export default { } paneDiv.appendChild(renderIssue(subject, context)) updater.addDownstreamChangeListener(stateStore, function () { - UI.widgets.refreshTree(paneDiv) + widgets.refreshTree(paneDiv) }) // Live update } ) From 4c5dfe800df01800c1f8839d38145da6c41852f8 Mon Sep 17 00:00:00 2001 From: Tim Berners-Lee Date: Wed, 18 Nov 2020 09:11:58 +0000 Subject: [PATCH 3/8] refresh for live update. async. --- issuePane.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/issuePane.js b/issuePane.js index 850954e..f5c313d 100644 --- a/issuePane.js +++ b/issuePane.js @@ -348,14 +348,15 @@ export default { } // Allow user to create new things within the folder - function renderCreationControl (refreshTarget) { + // @@ move this into common code + function renderCreationControl (refreshTarget, noun) { var creationDiv = dom.createElement('div') var me = UI.authn.currentUser() var creationContext = { // folder: subject, div: creationDiv, dom: dom, - noun: 'tracker', + noun: noun, statusArea: creationDiv, me: me, refreshTarget: refreshTarget @@ -365,22 +366,16 @@ export default { UI.create.newThingUI(creationContext, context, relevantPanes) // Have to pass panes down newUI return creationDiv } - - async function renderInstances (theClass) { + async function renderInstances (theClass, noun) { const instancesDiv = dom.createElement('div') - var context = { dom, div: instancesDiv, noun: 'tracker' } - UI.authn.registrationList(context, { public: true, private: true, type: theClass }).then(_context2 => { - instancesDiv.appendChild(renderCreationControl(instancesDiv)) - /* // keep this code in case we need a form - const InstancesForm = ns.wf('TrackerInstancesForm') - const text = trackerInstancesFormText - $rdf.parse(text, kb, InstancesForm.doc().uri, 'text/turtle') - widgets.appendForm(dom, instancesDiv, {}, tracker, InstancesForm, - tracker.doc(), complainIfBad) - */ - }) + var context = { dom, div: instancesDiv, noun: noun } + + const _context2 = await UI.authn.registrationList(context, { public: true, private: true, type: theClass }) + instancesDiv.appendChild(renderCreationControl(instancesDiv, noun)) + return instancesDiv } + async function renderSettings (tracker) { const settingsDiv = dom.createElement('div') // A registration control allows the to record this tracker in their type index @@ -408,7 +403,7 @@ export default { } else if (object.sameTerm(settingsView)) { ele.appendChild(await renderSettings(tracker)) } else if (object.sameTerm(instancesView)) { - ele.appendChild(await renderInstances(ns.wf('Tracker'))) + ele.appendChild(await renderInstances(ns.wf('Tracker'), 'tracker')) } else if ((kb.holds(tracker, ns.wf('issueCategory'), object)) || (kb.holds(tracker, ns.wf('issueClass'), object))) { ele.appendChild(await renderBoard(tracker, object)) From 17ff4755aa0aac509abe836f01da0a74dd4d4170 Mon Sep 17 00:00:00 2001 From: Tim Berners-Lee Date: Wed, 18 Nov 2020 09:14:15 +0000 Subject: [PATCH 4/8] sigh package-lock.json --- package-lock.json | 336 ++-------------------------------------------- 1 file changed, 12 insertions(+), 324 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9b788a..8f1f1c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -146,11 +146,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/node": { - "version": "13.13.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.14.tgz", - "integrity": "sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g==" - }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -412,6 +407,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -421,14 +417,6 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -466,11 +454,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, "canonicalize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.1.tgz", @@ -692,20 +675,6 @@ "which": "^1.2.9" } }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.11.tgz", - "integrity": "sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw==" - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -729,11 +698,6 @@ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -885,11 +849,6 @@ "is-symbol": "^1.0.2" } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1368,6 +1327,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -1609,11 +1569,6 @@ "slash": "^3.0.0" } }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1801,15 +1756,11 @@ "is-extglob": "^2.1.1" } }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-obj": { "version": "1.0.1", @@ -1959,14 +1910,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "requires": { - "minimist": "^1.2.5" - } - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -2005,154 +1948,6 @@ "verror": "1.10.0" } }, - "jss": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.3.0.tgz", - "integrity": "sha512-B5sTRW9B6uHaUVzSo9YiMEOEp3UX8lWevU0Fsv+xtRnsShmgCfIYX44bTH8bPJe6LQKqEXku3ulKuHLbxBS97Q==", - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^2.6.5", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-camel-case": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz", - "integrity": "sha512-tadWRi/SLWqLK3EUZEdDNJL71F3ST93Zrl9JYMjV0QDqKPAl0Liue81q7m/nFUpnSTXczbKDy4wq8rI8o7WFqA==", - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "^10.3.0" - } - }, - "jss-plugin-compose": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.3.0.tgz", - "integrity": "sha512-ugJYobeN9mawx7Nv5BrSLhVgU1kJsNpLEfTPKjgMRH7MlHNinrF5O9h4rVTZZvJUZ298JbpPu2zGrwvsjgFwag==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-default-unit": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.3.0.tgz", - "integrity": "sha512-tT5KkIXAsZOSS9WDSe8m8lEHIjoEOj4Pr0WrG0WZZsMXZ1mVLFCSsD2jdWarQWDaRNyMj/I4d7czRRObhOxSuw==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0" - } - }, - "jss-plugin-expand": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.3.0.tgz", - "integrity": "sha512-zyphg4NqZjMu9bLbx0QBgziCQKIowNO5yVLIa+kLVi6sE9IMKV8p2SrBtLtLktTjM72gO4u/kKnlCz0SckQuyQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0" - } - }, - "jss-plugin-extend": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.3.0.tgz", - "integrity": "sha512-FTRG3RNaMYO+j/X7DOo+nBtou9A2slonaip363KvHKo2Ji9bEK9WDbytOTaYGdeX/UuwJ2C/PQd5lMs4lB0Vow==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-global": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.3.0.tgz", - "integrity": "sha512-etYTG/y3qIR/vxZnKY+J3wXwObyBDNhBiB3l/EW9/pE3WHE//BZdK8LFvQcrCO48sZW1Z6paHo6klxUPP7WbzA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0" - } - }, - "jss-plugin-nested": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.3.0.tgz", - "integrity": "sha512-qWiEkoXNEkkZ+FZrWmUGpf+zBsnEOmKXhkjNX85/ZfWhH9dfGxUCKuJFuOWFM+rjQfxV4csfesq4hY0jk8Qt0w==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.3.0.tgz", - "integrity": "sha512-boetORqL/lfd7BWeFD3K+IyPqyIC+l3CRrdZr+NPq7Noqp+xyg/0MR7QisgzpxCEulk+j2CRcEUoZsvgPC4nTg==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.3.0.tgz", - "integrity": "sha512-7WiMrKIHH3rwxTuJki9+7nY11r1UXqaUZRhHvqTD4/ZE+SVhvtD5Tx21ivNxotwUSleucA/8boX+NF21oXzr5Q==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-rule-value-observable": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.3.0.tgz", - "integrity": "sha512-F0qISCiWjg2Ha24Zc143n30NaWBOTsJLTwuN05ZAuLMp81YD9eRMQbUQUFq6fJVh82xivxheatajTso2qLxFEQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "symbol-observable": "^1.2.0" - } - }, - "jss-plugin-template": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.3.0.tgz", - "integrity": "sha512-p862BehZeAZRcBZT834rCHO58TTimYaG1eFe1x3uNjKJkdfGpRF00bGN2NQ+0u5yBoeqz1gPG/YpdcDkpHvnFA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.3.0.tgz", - "integrity": "sha512-sZQbrcZyP5V0ADjCLwUA1spVWoaZvM7XZ+2fSeieZFBj31cRsnV7X70FFDerMHeiHAXKWzYek+67nMDjhrZAVQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "^10.3.0" - } - }, - "jss-preset-default": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.3.0.tgz", - "integrity": "sha512-LwDj4t8jBe0S/hXuR0THmhAsbngw7134efrWvJrkXLj+/+cxRQQAnsXWS6DBEZT5nrXaWH0C9HAeR2v2ZZKPWA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "^10.3.0", - "jss-plugin-camel-case": "^10.3.0", - "jss-plugin-compose": "^10.3.0", - "jss-plugin-default-unit": "^10.3.0", - "jss-plugin-expand": "^10.3.0", - "jss-plugin-extend": "^10.3.0", - "jss-plugin-global": "^10.3.0", - "jss-plugin-nested": "^10.3.0", - "jss-plugin-props-sort": "^10.3.0", - "jss-plugin-rule-value-function": "^10.3.0", - "jss-plugin-rule-value-observable": "^10.3.0", - "jss-plugin-template": "^10.3.0", - "jss-plugin-vendor-prefixer": "^10.3.0" - } - }, "jsx-ast-utils": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", @@ -2472,11 +2267,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -2607,11 +2397,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2622,6 +2407,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, "requires": { "braces": "^3.0.1", "picomatch": "^2.0.5" @@ -2668,12 +2454,14 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -2954,7 +2742,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -2984,7 +2772,8 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true }, "pify": { "version": "2.3.0", @@ -3563,16 +3352,6 @@ } } }, - "solid-auth-tls": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/solid-auth-tls/-/solid-auth-tls-0.1.2.tgz", - "integrity": "sha1-FoBf9pUd/PNczfTw29JhaQsjvLo=" - }, - "solid-namespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.3.0.tgz", - "integrity": "sha512-IKHYI5KMnN2AkuIADDKOpRLvs8ynBu+hF+QpIGDRrFnogpYZaG09DqB8NCLMR2sOoNVcYkjfnEumlSTDfeVlLA==" - }, "solid-rest": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/solid-rest/-/solid-rest-1.2.1.tgz", @@ -3584,55 +3363,6 @@ "mime-types": "^2.1.24" } }, - "solid-ui": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.1.1.tgz", - "integrity": "sha512-9z1GfdKFSbAEclE4LfO1DPPEMJMEZ540m+jRAJAZxmj4jg5MynO7JRDUvcsHJFbE0MRlZ3v8yTsARsOda82TqA==", - "requires": { - "@babel/runtime": "^7.10.3", - "@types/node": "^13.13.12", - "escape-html": "^1.0.3", - "jss": "^10.3.0", - "jss-preset-default": "^10.3.0", - "mime-types": "^2.1.27", - "node-uuid": "^1.4.7", - "pane-registry": "^2.1.1", - "rdflib": "^1.2.3", - "solid-auth-client": "^2.4.1", - "solid-auth-tls": "^0.1.2", - "solid-namespace": "^0.3.0", - "ts-jest": "^25.5.1" - }, - "dependencies": { - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, - "pane-registry": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-2.1.1.tgz", - "integrity": "sha512-f1Ivhxu4178Cn2ZLbD669/k4WiWYK2Jq/ewxoR5a3ZYQYjq/rPGrhpYWFRFcj6Zja1rN0zg2Rn4EpvbHtCsyPw==", - "requires": { - "rdflib": "^1.2.3" - } - }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } - } - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -3851,11 +3581,6 @@ "has-flag": "^3.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -3910,11 +3635,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -3928,6 +3648,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -3949,30 +3670,6 @@ "punycode": "^2.1.0" } }, - "ts-jest": { - "version": "25.5.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", - "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "micromatch": "4.x", - "mkdirp": "0.x", - "semver": "6.x", - "yargs-parser": "18.x" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -4196,15 +3893,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } } From 70bd88a3d1a7c41903899a68816f11d627347d90 Mon Sep 17 00:00:00 2001 From: Timea Date: Fri, 11 Mar 2022 11:44:43 +0100 Subject: [PATCH 5/8] Update issuePane.js Co-authored-by: Ted Thibodeau Jr --- issuePane.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/issuePane.js b/issuePane.js index 200c1be..7c59342 100644 --- a/issuePane.js +++ b/issuePane.js @@ -379,7 +379,7 @@ export default { async function renderSettings (tracker) { const settingsDiv = dom.createElement('div') - // A registration control allows the to record this tracker in their type index + // A registration control allows the user to record this tracker in their type index const context = { dom, div: settingsDiv, noun: 'tracker' } UI.authn.registrationControl(context, tracker, ns.wf('Tracker')).then(_context2 => { const settingsForm = ns.wf('TrackerSettingsForm') From cc9dc520e16e3833db15a1859c69979b279197fc Mon Sep 17 00:00:00 2001 From: Timea Date: Fri, 11 Mar 2022 11:44:49 +0100 Subject: [PATCH 6/8] Update issuePane.js Co-authored-by: Ted Thibodeau Jr --- issuePane.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/issuePane.js b/issuePane.js index 7c59342..fe79320 100644 --- a/issuePane.js +++ b/issuePane.js @@ -187,7 +187,7 @@ export default { await updater.update(deletables, insertables) alert('(Config file adjusted)') } catch (err) { - const msg = 'Config file cant be adjusted: ' + err + const msg = 'Config file cannot be adjusted: ' + err alert(msg) console.error(msg) } From b061523fe1b2f4104ea2c7e24c583f64eacb5fe0 Mon Sep 17 00:00:00 2001 From: Timea Date: Fri, 11 Mar 2022 11:44:55 +0100 Subject: [PATCH 7/8] Update issuePane.js Co-authored-by: Ted Thibodeau Jr --- issuePane.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/issuePane.js b/issuePane.js index fe79320..ee66fc9 100644 --- a/issuePane.js +++ b/issuePane.js @@ -144,8 +144,8 @@ export default { /** Infer subclass from disjoint Union ** - ** This is would not be needed if our query language - ** allowed is to query rdf Collection membership. + ** This would not be needed if our query language + ** allowed us to query RDF Collection membership. */ function checkSubClasses (kb, tracker) { function checkOneSuperclass (klass) { From 0ab3a981b7fe71103840e012133e45c45434bede Mon Sep 17 00:00:00 2001 From: Timea Date: Fri, 11 Mar 2022 11:45:01 +0100 Subject: [PATCH 8/8] Update issuePane.js Co-authored-by: Ted Thibodeau Jr --- issuePane.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/issuePane.js b/issuePane.js index ee66fc9..a1aec75 100644 --- a/issuePane.js +++ b/issuePane.js @@ -128,7 +128,7 @@ export default { const paneDiv = dom.createElement('div') context.paneDiv = paneDiv paneDiv.setAttribute('class', 'issuePane') - var refreshables = [] // Separate of widgets to be refreshed + var refreshables = [] // Separate widgets to be refreshed paneDiv.refresh = refreshPane function complain (message) {