solid-panes 3.5.25-991cd384 → 3.5.25-c1b7ed9f

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.
Files changed (45) hide show
  1. package/lib/dashboard/basicPreferences.js +12 -8
  2. package/lib/dashboard/basicPreferences.js.map +1 -1
  3. package/lib/dashboard/dashboardPane.js.map +1 -1
  4. package/lib/dashboard/homepage.js +8 -4
  5. package/lib/dashboard/homepage.js.map +1 -1
  6. package/lib/form/pane.js.map +1 -1
  7. package/lib/home/homePane.js +6 -2
  8. package/lib/home/homePane.js.map +1 -1
  9. package/lib/humanReadablePane.js.map +1 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/internal/internalPane.js.map +1 -1
  12. package/lib/mainPage/footer.js.map +1 -1
  13. package/lib/mainPage/header.js +12 -8
  14. package/lib/mainPage/header.js.map +1 -1
  15. package/lib/mainPage/index.js +6 -2
  16. package/lib/mainPage/index.js.map +1 -1
  17. package/lib/microblogPane/microblogPane.js.map +1 -1
  18. package/lib/outline/licenseOptions.js.map +1 -1
  19. package/lib/outline/manager.js +26 -24
  20. package/lib/outline/manager.js.map +1 -1
  21. package/lib/outline/manager.test.js +6 -2
  22. package/lib/outline/manager.test.js.map +1 -1
  23. package/lib/outline/propertyViews.d.ts +1 -1
  24. package/lib/outline/propertyViews.d.ts.map +1 -1
  25. package/lib/outline/propertyViews.js.map +1 -1
  26. package/lib/outline/propertyViews.test.js.map +1 -1
  27. package/lib/outline/queryByExample.js.map +1 -1
  28. package/lib/outline/userInput.js.map +1 -1
  29. package/lib/pad/padPane.js.map +1 -1
  30. package/lib/profile/editProfile.view.js.map +1 -1
  31. package/lib/schedule/schedulePane.js.map +1 -1
  32. package/lib/sharing/sharingPane.js.map +1 -1
  33. package/lib/socialPane.js.map +1 -1
  34. package/lib/tabbed/tabbedPane.js +6 -2
  35. package/lib/tabbed/tabbedPane.js.map +1 -1
  36. package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
  37. package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
  38. package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
  39. package/lib/trustedApplications/trustedApplications.view.js +6 -2
  40. package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
  41. package/lib/versionInfo.d.ts +9 -9
  42. package/lib/versionInfo.js +14 -14
  43. package/lib/versionInfo.js.map +1 -1
  44. package/package.json +12 -12
  45. package/src/versionInfo.ts +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"schedulePane.js","names":["$rdf","UI","rdf","ns","possibleAvailabilities","sched","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","t","findTypeURIs","mintClass","mintNew","options","Promise","resolve","reject","newBase","thisInstance","useExisting","sym","complainIfBad","ok","body","console","log","Error","genACLtext","docURI","aclURI","allWrite","g","graph","auth","Namespace","a","acl","doc","add","me","foaf","serialize","setACL2","callbackFunction","aclDoc","any","aclText","uri","fetcher","webOperation","data","contentType","then","_result","err","message","load","updater","authn","currentUser","alert","base","dir","newDetailsDoc","newInstance","newResultsDoc","toBeCopied","noIndexHTML","local","agenda","f","length","item","fun","copyItem","push","newURI","setThatACL","shift","webCopy","checkUser","webId","createDetailsFile","dc","Date","put","statementsMatching","undefined","uri2","render","dom","invitation","appPathSegment","waitingForLogin","detailsDoc","baseDir","resultsDoc","formsURI","form1","form2","form3","formText","require","parse","inputStyle","buttonIconStyle","div","appendChild","widgets","errorMessageBlock","clearElement","ele","firstChild","removeChild","refreshCellColor","cell","value","bg","ui","setAttribute","logInOutButton","refresh","showAppropriateDisplay","newInstanceButton","b","login","newAppInstance","noun","initializeNewInstanceInWorkspace","ws","space","split","slice","error","now","getTime","initializeNewInstanceAtBase","p","createElement","innerHTML","getForms","getDetails","nowOrWhenFetched","showSignon","editable","holds","wf","showBootstrap","ready","showForms","getResults","naviMain","signonContext","ensureLoggedIn","textContent","baseField","size","autocomplete","button","addEventListener","_e","doneButton","naviCenter","wizard","currentSlide","gotDoneButton","forms","slides","slide","appendForm","document","b1","removeAttribute","b2","emailButton","naviLeft","naviRight","table","insertables","st","update","success","errorBody","emailIcon","title","anyValue","cal","mailto","each","map","who","mbox","replace","join","encodeURIComponent","window","location","href","response","status","showResults","comment","author","authorName","query","Query","v","vs","forEach","x","vars","variable","pat","resp","time","set_x","opt","set_y","possibleTimes","displayTheMatrix","matrix","matrixForQuery","refreshButton","refreshIcon","disabled","dataPointForNT","loginContext","filter","z","sameTerm","cellFunction","y","_error","selectOptions","predicate","cellSubject","toNT","selector","makeSelectForOptions","utils","responses","myResponse","r","id","newThing","dps","dataPoint","j","instanceCreator","editButton","editIcon","structure","naviLoginoutTR","naviTop","naviMenu"],"sources":["../../src/schedule/schedulePane.js"],"sourcesContent":["/* Scheduler Pane\n **\n **\n */\n/* global alert */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nconst $rdf = UI.rdf\nconst ns = UI.ns\n\n// @@ Give other combos too-- see schedule ontology\nconst possibleAvailabilities = [\n ns.sched('No'),\n ns.sched('Maybe'),\n ns.sched('Yes')\n]\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_346777.svg', // @@ better?\n\n name: 'schedule',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an Scheduler pane?\n label: function (subject, context) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/ns/pim/schedule#SchedulableEvent']) {\n return 'Scheduling poll'\n }\n return null // No under other circumstances\n },\n\n // Mint a new Schedule poll\n mintClass: ns.sched('SchedulableEvent'),\n\n mintNew: function (context, options) {\n return new Promise(function (resolve, reject) {\n const ns = UI.ns\n const kb = context.session.store\n let newBase = options.newBase\n const thisInstance =\n options.useExisting || $rdf.sym(options.newBase + 'index.ttl#this')\n\n const complainIfBad = function (ok, body) {\n if (ok) return\n console.log(\n 'Error in Schedule Pane: Error constructing new scheduler: ' + body\n )\n reject(new Error(body))\n }\n\n // ////////////////////// Accesss control\n\n // Two constiations of ACL for this app, public read and public read/write\n // In all cases owner has read write control\n\n const genACLtext = function (docURI, aclURI, allWrite) {\n const g = $rdf.graph()\n const auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(aclURI + '#a1')\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n a = g.sym(aclURI + '#a2')\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n if (allWrite) {\n g.add(a, auth('mode'), auth('Write'), acl)\n }\n return $rdf.serialize(acl, g, aclURI, 'text/turtle')\n }\n\n /*\n const setACL3 = function (docURI, allWrite, callbackFunction) {\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n return UI.acl.setACL(docURI, aclText, callbackFunction)\n }\n */\n\n const setACL2 = function setACL2 (docURI, allWrite, callbackFunction) {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n ) // @@ check that this get set by web.js\n\n if (aclDoc) {\n // Great we already know where it is\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n } else {\n return fetcher\n .load(docURI)\n .catch(err => {\n callbackFunction(false, 'Getting headers for ACL: ' + err)\n })\n .then(() => {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n )\n\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n throw new Error('No Link rel=ACL header for ' + docURI)\n }\n\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher.webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n }\n }\n\n // Body of mintNew\n const fetcher = kb.fetcher\n const updater = kb.updater\n\n let me = options.me || authn.currentUser()\n if (!me) {\n console.log('MUST BE LOGGED IN')\n alert('NOT LOGGED IN')\n return\n }\n\n const base = thisInstance.dir().uri\n let newDetailsDoc, newInstance // , newIndexDoc\n\n if (options.useExisting) {\n newInstance = options.useExisting\n newBase = thisInstance.dir().uri\n newDetailsDoc = newInstance.doc()\n // newIndexDoc = null\n if (options.newBase) {\n throw new Error(\n 'mint new scheduler: Illegal - have both new base and existing event'\n )\n }\n } else {\n newDetailsDoc = kb.sym(newBase + 'details.ttl')\n // newIndexDoc = kb.sym(newBase + 'index.html')\n newInstance = kb.sym(newDetailsDoc.uri + '#event')\n }\n\n const newResultsDoc = kb.sym(newBase + 'results.ttl')\n\n const toBeCopied = options.noIndexHTML\n ? {}\n : [{ local: 'index.html', contentType: 'text/html' }]\n\n const agenda = []\n\n // @@ This needs some form of visible progress bar\n for (let f = 0; f < toBeCopied.length; f++) {\n const item = toBeCopied[f]\n const fun = function copyItem (item) {\n agenda.push(function () {\n const newURI = newBase + item.local\n console.log('Copying ' + base + item.local + ' to ' + newURI)\n\n const setThatACL = function () {\n setACL2(newURI, false, function (ok, message) {\n if (!ok) {\n complainIfBad(\n ok,\n 'FAILED to set ACL ' + newURI + ' : ' + message\n )\n console.log('FAILED to set ACL ' + newURI + ' : ' + message)\n } else {\n agenda.shift()() // beware too much nesting\n }\n })\n }\n\n kb.fetcher\n .webCopy(\n base + item.local,\n newBase + item.local,\n item.contentType\n )\n .then(() => authn.checkUser())\n .then(webId => {\n me = webId\n\n setThatACL()\n })\n .catch(err => {\n console.log(\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n complainIfBad(\n false,\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n })\n })\n }\n fun(item)\n }\n\n agenda.push(function createDetailsFile () {\n kb.add(\n newInstance,\n ns.rdf('type'),\n ns.sched('SchedulableEvent'),\n newDetailsDoc\n )\n if (me) {\n kb.add(newInstance, ns.dc('author'), me, newDetailsDoc) // Who is sending the invitation?\n kb.add(newInstance, ns.foaf('maker'), me, newDetailsDoc) // Uneditable - wh is allowed to edit this?\n }\n\n kb.add(newInstance, ns.dc('created'), new Date(), newDetailsDoc)\n kb.add(newInstance, ns.sched('resultsDocument'), newDetailsDoc)\n\n updater.put(\n newDetailsDoc,\n kb.statementsMatching(undefined, undefined, undefined, newDetailsDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n agenda.shift()()\n } else {\n complainIfBad(\n ok,\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n }\n }\n )\n })\n\n agenda.push(function () {\n kb.fetcher\n .webOperation('PUT', newResultsDoc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(() => {\n agenda.shift()()\n })\n .catch(err => {\n complainIfBad(\n false,\n 'Failed to initialize empty results file: ' + err.message\n )\n })\n })\n\n agenda.push(function () {\n setACL2(newResultsDoc.uri, true, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set Read-Write ACL on results file: ' + body\n )\n if (ok) agenda.shift()()\n })\n })\n\n agenda.push(function () {\n setACL2(newDetailsDoc.uri, false, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set read ACL on configuration file: ' + body\n )\n if (ok) agenda.shift()()\n })\n })\n\n agenda.push(function () {\n // give the user links to the new app\n console.log('Finished minting new scheduler')\n options.newInstance = newInstance\n resolve(options)\n })\n\n agenda.shift()()\n // Created new data files.\n }) // promise\n }, // mintNew\n\n // Render one meeting schedule poll\n render: function (subject, context) {\n const dom = context.dom\n const kb = context.session.store\n const ns = UI.ns\n const invitation = subject\n const appPathSegment = 'app-when-can-we.w3.org' // how to allocate this string and connect to\n\n // ////////////////////////////////////////////\n\n const fetcher = kb.fetcher\n const updater = kb.updater\n let waitingForLogin = false\n\n const thisInstance = subject\n const detailsDoc = subject.doc()\n const baseDir = detailsDoc.dir()\n const base = baseDir.uri\n\n const resultsDoc = $rdf.sym(base + 'results.ttl')\n // const formsURI = base + 'forms.ttl'\n // We can't in fact host stuff from there because of CORS\n const formsURI =\n 'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl'\n\n const form1 = kb.sym(formsURI + '#form1')\n const form2 = kb.sym(formsURI + '#form2')\n const form3 = kb.sym(formsURI + '#form3')\n\n const formText = require('./formsForSchedule.js')\n $rdf.parse(formText, kb, formsURI, 'text/turtle') // Load forms directly\n\n const inputStyle =\n 'background-color: #eef; padding: 0.5em; border: .5em solid white; font-size: 100%' // font-size: 120%\n const buttonIconStyle = 'width: 1.8em; height: 1.8em;'\n\n // Utility functions\n\n const complainIfBad = function (ok, message) {\n if (!ok) {\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n }\n\n const clearElement = function (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n }\n\n const refreshCellColor = function (cell, value) {\n const bg = kb.any(value, UI.ns.ui('backgroundColor'))\n if (bg) {\n cell.setAttribute(\n 'style',\n 'padding: 0.3em; text-align: center; background-color: ' + bg + ';'\n )\n }\n }\n\n let me\n\n authn.checkUser().then(webId => {\n me = webId\n\n if (logInOutButton) {\n logInOutButton.refresh()\n }\n if (webId && waitingForLogin) {\n waitingForLogin = false\n showAppropriateDisplay()\n }\n })\n console.log('me: ' + me) // @@ curently not actually used elsewhere\n\n // ////////////////////////////// Reproduction: spawn a new instance\n //\n // Viral growth path: user of app decides to make another instance\n //\n\n const newInstanceButton = function () {\n const b = UI.login.newAppInstance(\n dom,\n { noun: 'scheduler' },\n initializeNewInstanceInWorkspace\n )\n b.firstChild.setAttribute('style', inputStyle)\n return b\n } // newInstanceButton\n\n // /////////////////////// Create new document files for new instance of app\n\n const initializeNewInstanceInWorkspace = function (ws) {\n let newBase = kb.any(ws, ns.space('uriPrefix'))\n if (!newBase) {\n newBase = ws.uri.split('#')[0]\n } else {\n newBase = newBase.value\n }\n if (newBase.slice(-1) !== '/') {\n $rdf.log.error(appPathSegment + ': No / at end of uriPrefix ' + newBase) // @@ paramater?\n newBase = newBase + '/'\n }\n const now = new Date()\n newBase += appPathSegment + '/id' + now.getTime() + '/' // unique id\n\n initializeNewInstanceAtBase(thisInstance, newBase)\n }\n\n const initializeNewInstanceAtBase = function (thisInstance, newBase) {\n const options = { thisInstance: thisInstance, newBase: newBase }\n this.mintNew(context, options)\n .then(function (options) {\n const p = div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n \"Your <a href='\" +\n options.newInstance.uri +\n \"'><b>new scheduler</b></a> is ready to be set up. \" +\n \"<br/><br/><a href='\" +\n options.newInstance.uri +\n \"'>Say when you what days work for you.</a>\"\n })\n .catch(function (error) {\n complainIfBad(\n false,\n 'Error createing new scheduler at ' +\n options.newInstance +\n ': ' +\n error\n )\n })\n }\n\n // ///////////////////////\n\n const getForms = function () {\n console.log('getforms()')\n getDetails()\n /*\n fetcher.nowOrWhenFetched(formsURI, undefined, function (ok, body) {\n console.log('getforms() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n getDetails()\n })\n */\n }\n\n const getDetails = function () {\n console.log('getDetails()') // Looking for blank screen hang-up\n fetcher.nowOrWhenFetched(detailsDoc.uri, undefined, function (ok, body) {\n console.log('getDetails() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n showAppropriateDisplay()\n })\n }\n\n const showAppropriateDisplay = function showAppropriateDisplay () {\n console.log('showAppropriateDisplay()')\n\n authn.checkUser().then(webId => {\n if (!webId) {\n return showSignon()\n }\n\n // On gh-pages, the turtle will not load properly (bad mime type)\n // but we can trap it as being a non-editable server.\n\n if (\n !kb.updater.editable(detailsDoc.uri, kb) ||\n kb.holds(subject, ns.rdf('type'), ns.wf('TemplateInstance'))\n ) {\n // This is read-only example e.g. on github pages, etc\n showBootstrap(div)\n return\n }\n\n const ready = kb.any(subject, ns.sched('ready'))\n\n if (!ready) {\n showForms()\n } else {\n // no editing not author\n getResults()\n }\n })\n }\n\n const showSignon = function showSignon () {\n clearElement(naviMain)\n const signonContext = { div: div, dom: dom }\n UI.login.ensureLoggedIn(signonContext).then(context => {\n me = context.me\n waitingForLogin = false // untested\n showAppropriateDisplay()\n })\n }\n\n const showBootstrap = function showBootstrap () {\n const div = clearElement(naviMain)\n div.appendChild(\n UI.login.newAppInstance(\n dom,\n { noun: 'poll' },\n initializeNewInstanceInWorkspace\n )\n )\n\n div.appendChild(dom.createElement('hr')) // @@\n\n const p = div.appendChild(dom.createElement('p'))\n p.textContent =\n 'Where would you like to store the data for the poll? ' +\n 'Give the URL of the directory where you would like the data stored.'\n const baseField = div.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n\n div.appendChild(dom.createElement('br')) // @@\n\n const button = div.appendChild(dom.createElement('button'))\n button.setAttribute('style', inputStyle)\n button.textContent = 'Start new poll at this URI'\n button.addEventListener('click', function (_e) {\n let newBase = baseField.value\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n initializeNewInstanceAtBase(thisInstance, newBase)\n })\n }\n\n // ///////////// The forms to configure the poll\n\n const doneButton = dom.createElement('button')\n\n const showForms = function () {\n clearElement(naviCenter) // Remove refresh button if nec\n const div = naviMain\n const wizard = true\n let currentSlide = 0\n let gotDoneButton = false\n if (wizard) {\n const forms = [form1, form2, form3]\n const slides = []\n currentSlide = 0\n for (let f = 0; f < forms.length; f++) {\n const slide = dom.createElement('div')\n UI.widgets.appendForm(\n document,\n slide,\n {},\n subject,\n forms[f],\n detailsDoc,\n complainIfBad\n )\n slides.push(slide)\n }\n\n const refresh = function () {\n clearElement(naviMain).appendChild(slides[currentSlide])\n\n if (currentSlide === 0) {\n b1.setAttribute('disabled', '')\n } else {\n b1.removeAttribute('disabled')\n }\n if (currentSlide === slides.length - 1) {\n b2.setAttribute('disabled', '')\n if (!gotDoneButton) {\n // Only expose at last slide seen\n naviCenter.appendChild(emailButton) // could also check data shape\n naviCenter.appendChild(doneButton) // could also check data shape\n gotDoneButton = true\n }\n } else {\n b2.removeAttribute('disabled')\n }\n }\n const b1 = clearElement(naviLeft).appendChild(dom.createElement('button'))\n b1.setAttribute('style', inputStyle)\n b1.textContent = '<- go back'\n b1.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide > 0) {\n currentSlide -= 1\n refresh()\n }\n },\n false\n )\n\n const b2 = clearElement(naviRight).appendChild(\n dom.createElement('button')\n )\n b2.setAttribute('style', inputStyle)\n b2.textContent = 'continue ->'\n b2.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide < slides.length - 1) {\n currentSlide += 1\n refresh()\n }\n },\n false\n )\n\n refresh()\n } else {\n // not wizard one big form\n // @@@ create the initial config doc if not exist\n const table = div.appendChild(dom.createElement('table'))\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form1,\n detailsDoc,\n complainIfBad\n )\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form2,\n detailsDoc,\n complainIfBad\n )\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form3,\n detailsDoc,\n complainIfBad\n )\n naviCenter.appendChild(doneButton) // could also check data shape\n }\n // @@@ link config to results\n\n const insertables = []\n insertables.push(\n $rdf.st(\n subject,\n ns.sched('availabilityOptions'),\n ns.sched('YesNoMaybe'),\n detailsDoc\n )\n )\n insertables.push(\n $rdf.st(subject, ns.sched('ready'), new Date(), detailsDoc)\n )\n insertables.push(\n $rdf.st(subject, ns.sched('results'), resultsDoc, detailsDoc)\n ) // @@ also link in results\n\n doneButton.setAttribute('style', inputStyle)\n doneButton.textContent = 'Go to poll'\n doneButton.addEventListener(\n 'click',\n function (_e) {\n if (kb.any(subject, ns.sched('ready'))) {\n // already done\n getResults()\n naviRight.appendChild(emailButton)\n } else {\n naviRight.appendChild(emailButton)\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n // naviRight.appendChild(emailButton)\n getResults()\n }\n })\n }\n },\n false\n )\n\n const emailButton = dom.createElement('button')\n emailButton.setAttribute('style', inputStyle)\n const emailIcon = emailButton.appendChild(dom.createElement('img'))\n emailIcon.setAttribute('src', UI.icons.iconBase + 'noun_480183.svg') // noun_480183.svg\n emailIcon.setAttribute('style', buttonIconStyle)\n // emailButton.textContent = 'email invitations'\n emailButton.addEventListener(\n 'click',\n function (_e) {\n const title =\n kb.anyValue(subject, ns.cal('summary')) ||\n kb.anyValue(subject, ns.dc('title')) ||\n ''\n const mailto =\n 'mailto:' +\n kb\n .each(subject, ns.sched('invitee'))\n .map(function (who) {\n const mbox = kb.any(who, ns.foaf('mbox'))\n return mbox ? mbox.uri.replace('mailto:', '') : ''\n })\n .join(',') +\n '?subject=' +\n encodeURIComponent(title + '-- When can we meet?') +\n '&body=' +\n encodeURIComponent(\n title + '\\n\\nWhen can you?\\n\\nSee ' + subject + '\\n'\n )\n // @@ assumed there is a data browser\n\n console.log('Mail: ' + mailto)\n window.location.href = mailto\n },\n false\n )\n } // showForms\n\n // Ask for each day, what times .. @@ to be added some time\n /*\n const setTimesOfDay = function () {\n const i, j, x, y, slot, cell, day\n const insertables = []\n const possibleDays = kb.each(invitation, ns.sched('option'))\n .map(function (opt) {return kb.any(opt, ns.cal('dtstart'))})\n const cellLookup = []\n const slots = kb.each(invitation, ns.sched('slot'))\n if (slots.length === 0) {\n for (i = 0; i < 2; i++) {\n slot = UI.widgets.newThing(detailsDoc)\n insertables.push($rdf.st(invitation, ns.sched('slot'), slot))\n insertables.push($rdf.st(slot, ns.rdfs('label'), 'slot ' + (i + 1)))\n for (j = 0; j < possibleDays.length; j++) {\n day - possibleDays[j]\n x = kb.any(slot, ns.rdfs('label'))\n y = kb.any(day, ns.cal('dtstart'))\n cell = UI.widgets.newThing(detailsDoc)\n cellLookup[x.toNT() + y.toNT()] = cell\n insertables.push($rdf.st(slot, ns.sched('cell'), cell))\n insertables.push($rdf.st(cell, ns.sched('day'), possibleDays[j]))\n }\n }\n }\n\n const query = new $rdf.Query('TimesOfDay')\n const v = {}['day', 'label', 'value', 'slot', 'cell'].map(function (x) {\n query.consts.push(v[x] = $rdf.constiable(x)) })\n query.pat.add(invitation, ns.sched('slot'), v.slot)\n query.pat.add(v.slot, ns.rdfs('label'), v.label)\n query.pat.add(v.slot, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('timeOfDay'), v.value)\n query.pat.add(v.cell, ns.sched('day'), v.day)\n\n const options = {}\n options.set_x = kb.each(subject, ns.sched('slot')) // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) { return kb.any(opt, ns.rdfs('label')) })\n\n options.set_y = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future\n options.set_y = options.set_y.map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const possibleTimes = kb.each(invitation, ns.sched('option'))\n .map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(UI.matrix.matrixForQuery(\n dom, query, v.time, v.author, v.value, options, function () {}))\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.setAttribute('style', inputStyle)\n refreshButton.textContent = 'refresh'\n refreshButton.addEventListener('click', function (e) {\n refreshButton.disabled = true\n store.fetcher.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n }, false)\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n const dataPointForNT = []\n\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) { return (! z.sameTerm(me)) })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n // const point = cellLookup[x.toNT() + y.toNT()]\n\n if (y.sameTerm(me)) {\n const callbackFunction = function () { refreshCellColor(cell, value); }; // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('timeOfDay')\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate,\n possibleAvailabilities, selectOptions, resultsDoc, callbackFunction)\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n const myResponse = null\n responses.map(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r\n }\n })\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push($rdf.st(invitation, ns.sched('response'), myResponse, doc))\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.map(function (dataPoint) {\n const time = kb.any(dataPoint, ns.cal('dtstart'))\n dataPointForNT[time.toNT()] = dataPoint\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n if (dataPointForNT[possibleTimes[j].toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc))\n insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)) // @@\n dataPointForNT[possibleTimes[j].toNT()] = dataPoint\n }\n if (insertables.length) {\n store.updater.update([], insertables, function (uri, success, errorBody) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else { // no insertables\n displayTheMatrix()\n }\n }\n */\n // end setTimesOfDay\n\n // Read or create empty results file\n function getResults () {\n fetcher.nowOrWhenFetched(resultsDoc.uri, (ok, body, response) => {\n if (!ok) {\n if (response.status === 404) {\n // / Check explicitly for 404 error\n console.log('Initializing details file ' + resultsDoc)\n updater.put(resultsDoc, [], 'text/turtle', function (\n uri2,\n ok,\n message\n ) {\n if (ok) {\n clearElement(naviMain)\n showResults()\n } else {\n complainIfBad(\n ok,\n 'FAILED to create results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to craete results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n }\n })\n } else {\n // Other error, not 404 -- do not try to overwite the file\n complainIfBad(ok, 'FAILED to read results file: ' + body)\n }\n } else {\n // Happy read\n clearElement(naviMain)\n showResults()\n }\n })\n }\n\n function showResults () {\n // Now the form for responsing to the poll\n //\n\n // div.appendChild(dom.createElement('hr'))\n\n // const invitation = subject\n const title = kb.any(invitation, ns.cal('summary'))\n const comment = kb.any(invitation, ns.cal('comment'))\n const location = kb.any(invitation, ns.cal('location'))\n const div = naviMain\n if (title) div.appendChild(dom.createElement('h3')).textContent = title\n if (location) {\n div.appendChild(dom.createElement('address')).textContent =\n location.value\n }\n if (comment) {\n div.appendChild(dom.createElement('p')).textContent = comment.value\n }\n const author = kb.any(invitation, ns.dc('author'))\n if (author) {\n const authorName = kb.any(author, ns.foaf('name'))\n if (authorName) {\n div.appendChild(dom.createElement('p')).textContent = authorName\n }\n }\n\n const query = new $rdf.Query('Responses')\n const v = {}\n const vs = ['time', 'author', 'value', 'resp', 'cell']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(invitation, ns.sched('response'), v.resp)\n query.pat.add(v.resp, ns.dc('author'), v.author)\n query.pat.add(v.resp, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('availabilty'), v.value)\n query.pat.add(v.cell, ns.cal('dtstart'), v.time)\n\n // Sort by by person @@@\n\n const options = {}\n options.set_x = kb.each(subject, ns.sched('option')) // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) {\n return kb.any(opt, ns.cal('dtstart'))\n })\n\n options.set_y = kb.each(subject, ns.sched('response'))\n options.set_y = options.set_y.map(function (resp) {\n return kb.any(resp, ns.dc('author'))\n })\n\n const possibleTimes = kb\n .each(invitation, ns.sched('option'))\n .map(function (opt) {\n return kb.any(opt, ns.cal('dtstart'))\n })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(\n UI.matrix.matrixForQuery(\n dom,\n query,\n v.time,\n v.author,\n v.value,\n options,\n function () {}\n )\n )\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.setAttribute('style', inputStyle)\n // refreshButton.textContent = 'refresh' // noun_479395.svg\n const refreshIcon = dom.createElement('img')\n refreshIcon.setAttribute('src', UI.icons.iconBase + 'noun_479395.svg')\n refreshIcon.setAttribute('style', buttonIconStyle)\n refreshButton.appendChild(refreshIcon)\n refreshButton.addEventListener(\n 'click',\n function (_e) {\n refreshButton.disabled = true\n kb.fetcher.refresh(resultsDoc, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n },\n false\n )\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n // @@ Give other combos too-- see schedule ontology\n // const possibleAvailabilities = [ SCHED('No'), SCHED('Maybe'), SCHED('Yes') ]\n\n // const me = authn.currentUser()\n\n const dataPointForNT = []\n\n const loginContext = { div: naviCenter, dom: dom }\n UI.login.ensureLoggedIn(loginContext).then(context => {\n const me = context.me\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) {\n return !z.sameTerm(me)\n })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n if (value !== null) {\n kb.fetcher.nowOrWhenFetched(\n value.uri.split('#')[0],\n undefined,\n function (ok, _error) {\n if (ok) refreshCellColor(cell, value)\n }\n )\n }\n if (y.sameTerm(me)) {\n const callbackFunction = function () {\n refreshCellColor(cell, value)\n } // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('availabilty')\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(\n dom,\n kb,\n cellSubject,\n predicate,\n possibleAvailabilities,\n selectOptions,\n resultsDoc,\n callbackFunction\n )\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n let myResponse = null\n responses.forEach(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r\n }\n })\n\n const insertables = [] // list of statements to be stored\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push(\n $rdf.st(invitation, ns.sched('response'), myResponse, doc)\n )\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.forEach(function (dataPoint) {\n const time = kb.any(dataPoint, ns.cal('dtstart'))\n dataPointForNT[time.toNT()] = dataPoint\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n if (dataPointForNT[possibleTimes[j].toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push(\n $rdf.st(myResponse, ns.sched('cell'), dataPoint, doc)\n )\n insertables.push(\n $rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)\n ) // @@\n dataPointForNT[possibleTimes[j].toNT()] = dataPoint\n }\n if (insertables.length) {\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else {\n // no insertables\n displayTheMatrix()\n }\n }) // @@@@ end of .then\n\n // If I made this in the first place, allow me to edit it.\n // @@ optionally -- allows others to if according to original\n const instanceCreator = kb.any(subject, ns.foaf('maker')) // owner?\n if (!instanceCreator || instanceCreator.sameTerm(me)) {\n const editButton = dom.createElement('button')\n editButton.setAttribute('style', inputStyle)\n // editButton.textContent = '(Modify the poll)' // noun_344563.svg\n const editIcon = dom.createElement('img')\n editIcon.setAttribute('src', UI.icons.iconBase + 'noun_344563.svg')\n editIcon.setAttribute('style', buttonIconStyle)\n editButton.appendChild(editIcon)\n editButton.addEventListener(\n 'click',\n function (_e) {\n clearElement(div)\n showForms()\n },\n false\n )\n clearElement(naviLeft)\n naviLeft.appendChild(editButton)\n }\n\n // div.appendChild(editButton)\n\n clearElement(naviRight)\n naviRight.appendChild(newInstanceButton())\n } // showResults\n\n const div = dom.createElement('div')\n const structure = div.appendChild(dom.createElement('table')) // @@ make responsive style\n structure.setAttribute(\n 'style',\n 'background-color: white; min-width: 40em; min-height: 13em;'\n )\n\n const naviLoginoutTR = structure.appendChild(dom.createElement('tr'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n\n const logInOutButton = null\n /*\n const logInOutButton = UI.login.loginStatusBox(dom, setUser)\n // floating divs lead to a mess\n // logInOutButton.setAttribute('style', 'float: right') // float the beginning of the end\n naviLoginout3.appendChild(logInOutButton)\n logInOutButton.setAttribute('style', 'margin-right: 0em;')\n */\n\n const naviTop = structure.appendChild(dom.createElement('tr'))\n const naviMain = naviTop.appendChild(dom.createElement('td'))\n naviMain.setAttribute('colspan', '3')\n\n const naviMenu = structure.appendChild(dom.createElement('tr'))\n naviMenu.setAttribute('class', 'naviMenu')\n naviMenu.setAttribute(\n 'style',\n ' text-align: middle; vertical-align: middle; padding-top: 4em; '\n )\n // naviMenu.setAttribute('style', 'margin-top: 3em;')\n const naviLeft = naviMenu.appendChild(dom.createElement('td'))\n const naviCenter = naviMenu.appendChild(dom.createElement('td'))\n const naviRight = naviMenu.appendChild(dom.createElement('td'))\n\n getForms()\n\n return div\n } // render\n} // property list\n// ends\n"],"mappings":"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G,MAAM,GACV,YACArL,EAAE,CACCsL,IADH,CACQxL,OADR,EACiBZ,EAAE,CAACE,KAAH,CAAS,SAAT,CADjB,EAEGmM,GAFH,CAEO,UAAUC,GAAV,EAAe;UAClB,IAAMC,IAAI,GAAGzL,EAAE,CAACuC,GAAH,CAAOiJ,GAAP,EAAYtM,EAAE,CAACgD,IAAH,CAAQ,MAAR,CAAZ,CAAb;UACA,OAAOuJ,IAAI,GAAGA,IAAI,CAAChJ,GAAL,CAASiJ,OAAT,CAAiB,SAAjB,EAA4B,EAA5B,CAAH,GAAqC,EAAhD;QACD,CALH,EAMGC,IANH,CAMQ,GANR,CADA,GAQA,WARA,GASAC,kBAAkB,CAACV,KAAK,GAAG,sBAAT,CATlB,GAUA,QAVA,GAWAU,kBAAkB,CAChBV,KAAK,GAAG,2BAAR,GAAsCpL,OAAtC,GAAgD,IADhC,CAZpB,CALY,CAoBZ;;QAEAoB,OAAO,CAACC,GAAR,CAAY,WAAWkK,MAAvB;QACAQ,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBV,MAAvB;MACD,CA1BH,EA2BE,KA3BF;IA6BD,CA7LD,CA9OkC,CA2ahC;IAEF;;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
1
+ {"version":3,"file":"schedulePane.js","names":["$rdf","UI","rdf","ns","possibleAvailabilities","sched","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","t","findTypeURIs","mintClass","mintNew","options","Promise","resolve","reject","newBase","thisInstance","useExisting","sym","complainIfBad","ok","body","console","log","Error","genACLtext","docURI","aclURI","allWrite","g","graph","auth","Namespace","a","acl","doc","add","me","foaf","serialize","setACL2","callbackFunction","aclDoc","any","aclText","uri","fetcher","webOperation","data","contentType","then","_result","err","message","load","updater","authn","currentUser","alert","base","dir","newDetailsDoc","newInstance","newResultsDoc","toBeCopied","noIndexHTML","local","agenda","f","length","item","fun","copyItem","push","newURI","setThatACL","shift","webCopy","checkUser","webId","createDetailsFile","dc","Date","put","statementsMatching","undefined","uri2","render","dom","invitation","appPathSegment","waitingForLogin","detailsDoc","baseDir","resultsDoc","formsURI","form1","form2","form3","formText","require","parse","inputStyle","buttonIconStyle","div","appendChild","widgets","errorMessageBlock","clearElement","ele","firstChild","removeChild","refreshCellColor","cell","value","bg","ui","setAttribute","logInOutButton","refresh","showAppropriateDisplay","newInstanceButton","b","login","newAppInstance","noun","initializeNewInstanceInWorkspace","ws","space","split","slice","error","now","getTime","initializeNewInstanceAtBase","p","createElement","innerHTML","getForms","getDetails","nowOrWhenFetched","showSignon","editable","holds","wf","showBootstrap","ready","showForms","getResults","naviMain","signonContext","ensureLoggedIn","textContent","baseField","size","autocomplete","button","addEventListener","_e","doneButton","naviCenter","wizard","currentSlide","gotDoneButton","forms","slides","slide","appendForm","document","b1","removeAttribute","b2","emailButton","naviLeft","naviRight","table","insertables","st","update","success","errorBody","emailIcon","title","anyValue","cal","mailto","each","map","who","mbox","replace","join","encodeURIComponent","window","location","href","response","status","showResults","comment","author","authorName","query","Query","v","vs","forEach","x","vars","variable","pat","resp","time","set_x","opt","set_y","possibleTimes","displayTheMatrix","matrix","matrixForQuery","refreshButton","refreshIcon","disabled","dataPointForNT","loginContext","filter","z","sameTerm","cellFunction","y","_error","selectOptions","predicate","cellSubject","toNT","selector","makeSelectForOptions","utils","responses","myResponse","r","id","newThing","dps","dataPoint","j","instanceCreator","editButton","editIcon","structure","naviLoginoutTR","naviTop","naviMenu"],"sources":["../../src/schedule/schedulePane.js"],"sourcesContent":["/* Scheduler Pane\n **\n **\n */\n/* global alert */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nconst $rdf = UI.rdf\nconst ns = UI.ns\n\n// @@ Give other combos too-- see schedule ontology\nconst possibleAvailabilities = [\n ns.sched('No'),\n ns.sched('Maybe'),\n ns.sched('Yes')\n]\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_346777.svg', // @@ better?\n\n name: 'schedule',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an Scheduler pane?\n label: function (subject, context) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/ns/pim/schedule#SchedulableEvent']) {\n return 'Scheduling poll'\n }\n return null // No under other circumstances\n },\n\n // Mint a new Schedule poll\n mintClass: ns.sched('SchedulableEvent'),\n\n mintNew: function (context, options) {\n return new Promise(function (resolve, reject) {\n const ns = UI.ns\n const kb = context.session.store\n let newBase = options.newBase\n const thisInstance =\n options.useExisting || $rdf.sym(options.newBase + 'index.ttl#this')\n\n const complainIfBad = function (ok, body) {\n if (ok) return\n console.log(\n 'Error in Schedule Pane: Error constructing new scheduler: ' + body\n )\n reject(new Error(body))\n }\n\n // ////////////////////// Accesss control\n\n // Two constiations of ACL for this app, public read and public read/write\n // In all cases owner has read write control\n\n const genACLtext = function (docURI, aclURI, allWrite) {\n const g = $rdf.graph()\n const auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(aclURI + '#a1')\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n a = g.sym(aclURI + '#a2')\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n if (allWrite) {\n g.add(a, auth('mode'), auth('Write'), acl)\n }\n return $rdf.serialize(acl, g, aclURI, 'text/turtle')\n }\n\n /*\n const setACL3 = function (docURI, allWrite, callbackFunction) {\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n return UI.acl.setACL(docURI, aclText, callbackFunction)\n }\n */\n\n const setACL2 = function setACL2 (docURI, allWrite, callbackFunction) {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n ) // @@ check that this get set by web.js\n\n if (aclDoc) {\n // Great we already know where it is\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n } else {\n return fetcher\n .load(docURI)\n .catch(err => {\n callbackFunction(false, 'Getting headers for ACL: ' + err)\n })\n .then(() => {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n )\n\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n throw new Error('No Link rel=ACL header for ' + docURI)\n }\n\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher.webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n }\n }\n\n // Body of mintNew\n const fetcher = kb.fetcher\n const updater = kb.updater\n\n let me = options.me || authn.currentUser()\n if (!me) {\n console.log('MUST BE LOGGED IN')\n alert('NOT LOGGED IN')\n return\n }\n\n const base = thisInstance.dir().uri\n let newDetailsDoc, newInstance // , newIndexDoc\n\n if (options.useExisting) {\n newInstance = options.useExisting\n newBase = thisInstance.dir().uri\n newDetailsDoc = newInstance.doc()\n // newIndexDoc = null\n if (options.newBase) {\n throw new Error(\n 'mint new scheduler: Illegal - have both new base and existing event'\n )\n }\n } else {\n newDetailsDoc = kb.sym(newBase + 'details.ttl')\n // newIndexDoc = kb.sym(newBase + 'index.html')\n newInstance = kb.sym(newDetailsDoc.uri + '#event')\n }\n\n const newResultsDoc = kb.sym(newBase + 'results.ttl')\n\n const toBeCopied = options.noIndexHTML\n ? {}\n : [{ local: 'index.html', contentType: 'text/html' }]\n\n const agenda = []\n\n // @@ This needs some form of visible progress bar\n for (let f = 0; f < toBeCopied.length; f++) {\n const item = toBeCopied[f]\n const fun = function copyItem (item) {\n agenda.push(function () {\n const newURI = newBase + item.local\n console.log('Copying ' + base + item.local + ' to ' + newURI)\n\n const setThatACL = function () {\n setACL2(newURI, false, function (ok, message) {\n if (!ok) {\n complainIfBad(\n ok,\n 'FAILED to set ACL ' + newURI + ' : ' + message\n )\n console.log('FAILED to set ACL ' + newURI + ' : ' + message)\n } else {\n agenda.shift()() // beware too much nesting\n }\n })\n }\n\n kb.fetcher\n .webCopy(\n base + item.local,\n newBase + item.local,\n item.contentType\n )\n .then(() => authn.checkUser())\n .then(webId => {\n me = webId\n\n setThatACL()\n })\n .catch(err => {\n console.log(\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n complainIfBad(\n false,\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n })\n })\n }\n fun(item)\n }\n\n agenda.push(function createDetailsFile () {\n kb.add(\n newInstance,\n ns.rdf('type'),\n ns.sched('SchedulableEvent'),\n newDetailsDoc\n )\n if (me) {\n kb.add(newInstance, ns.dc('author'), me, newDetailsDoc) // Who is sending the invitation?\n kb.add(newInstance, ns.foaf('maker'), me, newDetailsDoc) // Uneditable - wh is allowed to edit this?\n }\n\n kb.add(newInstance, ns.dc('created'), new Date(), newDetailsDoc)\n kb.add(newInstance, ns.sched('resultsDocument'), newDetailsDoc)\n\n updater.put(\n newDetailsDoc,\n kb.statementsMatching(undefined, undefined, undefined, newDetailsDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n agenda.shift()()\n } else {\n complainIfBad(\n ok,\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n }\n }\n )\n })\n\n agenda.push(function () {\n kb.fetcher\n .webOperation('PUT', newResultsDoc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(() => {\n agenda.shift()()\n })\n .catch(err => {\n complainIfBad(\n false,\n 'Failed to initialize empty results file: ' + err.message\n )\n })\n })\n\n agenda.push(function () {\n setACL2(newResultsDoc.uri, true, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set Read-Write ACL on results file: ' + body\n )\n if (ok) agenda.shift()()\n })\n })\n\n agenda.push(function () {\n setACL2(newDetailsDoc.uri, false, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set read ACL on configuration file: ' + body\n )\n if (ok) agenda.shift()()\n })\n })\n\n agenda.push(function () {\n // give the user links to the new app\n console.log('Finished minting new scheduler')\n options.newInstance = newInstance\n resolve(options)\n })\n\n agenda.shift()()\n // Created new data files.\n }) // promise\n }, // mintNew\n\n // Render one meeting schedule poll\n render: function (subject, context) {\n const dom = context.dom\n const kb = context.session.store\n const ns = UI.ns\n const invitation = subject\n const appPathSegment = 'app-when-can-we.w3.org' // how to allocate this string and connect to\n\n // ////////////////////////////////////////////\n\n const fetcher = kb.fetcher\n const updater = kb.updater\n let waitingForLogin = false\n\n const thisInstance = subject\n const detailsDoc = subject.doc()\n const baseDir = detailsDoc.dir()\n const base = baseDir.uri\n\n const resultsDoc = $rdf.sym(base + 'results.ttl')\n // const formsURI = base + 'forms.ttl'\n // We can't in fact host stuff from there because of CORS\n const formsURI =\n 'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl'\n\n const form1 = kb.sym(formsURI + '#form1')\n const form2 = kb.sym(formsURI + '#form2')\n const form3 = kb.sym(formsURI + '#form3')\n\n const formText = require('./formsForSchedule.js')\n $rdf.parse(formText, kb, formsURI, 'text/turtle') // Load forms directly\n\n const inputStyle =\n 'background-color: #eef; padding: 0.5em; border: .5em solid white; font-size: 100%' // font-size: 120%\n const buttonIconStyle = 'width: 1.8em; height: 1.8em;'\n\n // Utility functions\n\n const complainIfBad = function (ok, message) {\n if (!ok) {\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n }\n\n const clearElement = function (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n }\n\n const refreshCellColor = function (cell, value) {\n const bg = kb.any(value, UI.ns.ui('backgroundColor'))\n if (bg) {\n cell.setAttribute(\n 'style',\n 'padding: 0.3em; text-align: center; background-color: ' + bg + ';'\n )\n }\n }\n\n let me\n\n authn.checkUser().then(webId => {\n me = webId\n\n if (logInOutButton) {\n logInOutButton.refresh()\n }\n if (webId && waitingForLogin) {\n waitingForLogin = false\n showAppropriateDisplay()\n }\n })\n console.log('me: ' + me) // @@ curently not actually used elsewhere\n\n // ////////////////////////////// Reproduction: spawn a new instance\n //\n // Viral growth path: user of app decides to make another instance\n //\n\n const newInstanceButton = function () {\n const b = UI.login.newAppInstance(\n dom,\n { noun: 'scheduler' },\n initializeNewInstanceInWorkspace\n )\n b.firstChild.setAttribute('style', inputStyle)\n return b\n } // newInstanceButton\n\n // /////////////////////// Create new document files for new instance of app\n\n const initializeNewInstanceInWorkspace = function (ws) {\n let newBase = kb.any(ws, ns.space('uriPrefix'))\n if (!newBase) {\n newBase = ws.uri.split('#')[0]\n } else {\n newBase = newBase.value\n }\n if (newBase.slice(-1) !== '/') {\n $rdf.log.error(appPathSegment + ': No / at end of uriPrefix ' + newBase) // @@ paramater?\n newBase = newBase + '/'\n }\n const now = new Date()\n newBase += appPathSegment + '/id' + now.getTime() + '/' // unique id\n\n initializeNewInstanceAtBase(thisInstance, newBase)\n }\n\n const initializeNewInstanceAtBase = function (thisInstance, newBase) {\n const options = { thisInstance: thisInstance, newBase: newBase }\n this.mintNew(context, options)\n .then(function (options) {\n const p = div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n \"Your <a href='\" +\n options.newInstance.uri +\n \"'><b>new scheduler</b></a> is ready to be set up. \" +\n \"<br/><br/><a href='\" +\n options.newInstance.uri +\n \"'>Say when you what days work for you.</a>\"\n })\n .catch(function (error) {\n complainIfBad(\n false,\n 'Error createing new scheduler at ' +\n options.newInstance +\n ': ' +\n error\n )\n })\n }\n\n // ///////////////////////\n\n const getForms = function () {\n console.log('getforms()')\n getDetails()\n /*\n fetcher.nowOrWhenFetched(formsURI, undefined, function (ok, body) {\n console.log('getforms() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n getDetails()\n })\n */\n }\n\n const getDetails = function () {\n console.log('getDetails()') // Looking for blank screen hang-up\n fetcher.nowOrWhenFetched(detailsDoc.uri, undefined, function (ok, body) {\n console.log('getDetails() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n showAppropriateDisplay()\n })\n }\n\n const showAppropriateDisplay = function showAppropriateDisplay () {\n console.log('showAppropriateDisplay()')\n\n authn.checkUser().then(webId => {\n if (!webId) {\n return showSignon()\n }\n\n // On gh-pages, the turtle will not load properly (bad mime type)\n // but we can trap it as being a non-editable server.\n\n if (\n !kb.updater.editable(detailsDoc.uri, kb) ||\n kb.holds(subject, ns.rdf('type'), ns.wf('TemplateInstance'))\n ) {\n // This is read-only example e.g. on github pages, etc\n showBootstrap(div)\n return\n }\n\n const ready = kb.any(subject, ns.sched('ready'))\n\n if (!ready) {\n showForms()\n } else {\n // no editing not author\n getResults()\n }\n })\n }\n\n const showSignon = function showSignon () {\n clearElement(naviMain)\n const signonContext = { div: div, dom: dom }\n UI.login.ensureLoggedIn(signonContext).then(context => {\n me = context.me\n waitingForLogin = false // untested\n showAppropriateDisplay()\n })\n }\n\n const showBootstrap = function showBootstrap () {\n const div = clearElement(naviMain)\n div.appendChild(\n UI.login.newAppInstance(\n dom,\n { noun: 'poll' },\n initializeNewInstanceInWorkspace\n )\n )\n\n div.appendChild(dom.createElement('hr')) // @@\n\n const p = div.appendChild(dom.createElement('p'))\n p.textContent =\n 'Where would you like to store the data for the poll? ' +\n 'Give the URL of the directory where you would like the data stored.'\n const baseField = div.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n\n div.appendChild(dom.createElement('br')) // @@\n\n const button = div.appendChild(dom.createElement('button'))\n button.setAttribute('style', inputStyle)\n button.textContent = 'Start new poll at this URI'\n button.addEventListener('click', function (_e) {\n let newBase = baseField.value\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n initializeNewInstanceAtBase(thisInstance, newBase)\n })\n }\n\n // ///////////// The forms to configure the poll\n\n const doneButton = dom.createElement('button')\n\n const showForms = function () {\n clearElement(naviCenter) // Remove refresh button if nec\n const div = naviMain\n const wizard = true\n let currentSlide = 0\n let gotDoneButton = false\n if (wizard) {\n const forms = [form1, form2, form3]\n const slides = []\n currentSlide = 0\n for (let f = 0; f < forms.length; f++) {\n const slide = dom.createElement('div')\n UI.widgets.appendForm(\n document,\n slide,\n {},\n subject,\n forms[f],\n detailsDoc,\n complainIfBad\n )\n slides.push(slide)\n }\n\n const refresh = function () {\n clearElement(naviMain).appendChild(slides[currentSlide])\n\n if (currentSlide === 0) {\n b1.setAttribute('disabled', '')\n } else {\n b1.removeAttribute('disabled')\n }\n if (currentSlide === slides.length - 1) {\n b2.setAttribute('disabled', '')\n if (!gotDoneButton) {\n // Only expose at last slide seen\n naviCenter.appendChild(emailButton) // could also check data shape\n naviCenter.appendChild(doneButton) // could also check data shape\n gotDoneButton = true\n }\n } else {\n b2.removeAttribute('disabled')\n }\n }\n const b1 = clearElement(naviLeft).appendChild(dom.createElement('button'))\n b1.setAttribute('style', inputStyle)\n b1.textContent = '<- go back'\n b1.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide > 0) {\n currentSlide -= 1\n refresh()\n }\n },\n false\n )\n\n const b2 = clearElement(naviRight).appendChild(\n dom.createElement('button')\n )\n b2.setAttribute('style', inputStyle)\n b2.textContent = 'continue ->'\n b2.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide < slides.length - 1) {\n currentSlide += 1\n refresh()\n }\n },\n false\n )\n\n refresh()\n } else {\n // not wizard one big form\n // @@@ create the initial config doc if not exist\n const table = div.appendChild(dom.createElement('table'))\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form1,\n detailsDoc,\n complainIfBad\n )\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form2,\n detailsDoc,\n complainIfBad\n )\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form3,\n detailsDoc,\n complainIfBad\n )\n naviCenter.appendChild(doneButton) // could also check data shape\n }\n // @@@ link config to results\n\n const insertables = []\n insertables.push(\n $rdf.st(\n subject,\n ns.sched('availabilityOptions'),\n ns.sched('YesNoMaybe'),\n detailsDoc\n )\n )\n insertables.push(\n $rdf.st(subject, ns.sched('ready'), new Date(), detailsDoc)\n )\n insertables.push(\n $rdf.st(subject, ns.sched('results'), resultsDoc, detailsDoc)\n ) // @@ also link in results\n\n doneButton.setAttribute('style', inputStyle)\n doneButton.textContent = 'Go to poll'\n doneButton.addEventListener(\n 'click',\n function (_e) {\n if (kb.any(subject, ns.sched('ready'))) {\n // already done\n getResults()\n naviRight.appendChild(emailButton)\n } else {\n naviRight.appendChild(emailButton)\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n // naviRight.appendChild(emailButton)\n getResults()\n }\n })\n }\n },\n false\n )\n\n const emailButton = dom.createElement('button')\n emailButton.setAttribute('style', inputStyle)\n const emailIcon = emailButton.appendChild(dom.createElement('img'))\n emailIcon.setAttribute('src', UI.icons.iconBase + 'noun_480183.svg') // noun_480183.svg\n emailIcon.setAttribute('style', buttonIconStyle)\n // emailButton.textContent = 'email invitations'\n emailButton.addEventListener(\n 'click',\n function (_e) {\n const title =\n kb.anyValue(subject, ns.cal('summary')) ||\n kb.anyValue(subject, ns.dc('title')) ||\n ''\n const mailto =\n 'mailto:' +\n kb\n .each(subject, ns.sched('invitee'))\n .map(function (who) {\n const mbox = kb.any(who, ns.foaf('mbox'))\n return mbox ? mbox.uri.replace('mailto:', '') : ''\n })\n .join(',') +\n '?subject=' +\n encodeURIComponent(title + '-- When can we meet?') +\n '&body=' +\n encodeURIComponent(\n title + '\\n\\nWhen can you?\\n\\nSee ' + subject + '\\n'\n )\n // @@ assumed there is a data browser\n\n console.log('Mail: ' + mailto)\n window.location.href = mailto\n },\n false\n )\n } // showForms\n\n // Ask for each day, what times .. @@ to be added some time\n /*\n const setTimesOfDay = function () {\n const i, j, x, y, slot, cell, day\n const insertables = []\n const possibleDays = kb.each(invitation, ns.sched('option'))\n .map(function (opt) {return kb.any(opt, ns.cal('dtstart'))})\n const cellLookup = []\n const slots = kb.each(invitation, ns.sched('slot'))\n if (slots.length === 0) {\n for (i = 0; i < 2; i++) {\n slot = UI.widgets.newThing(detailsDoc)\n insertables.push($rdf.st(invitation, ns.sched('slot'), slot))\n insertables.push($rdf.st(slot, ns.rdfs('label'), 'slot ' + (i + 1)))\n for (j = 0; j < possibleDays.length; j++) {\n day - possibleDays[j]\n x = kb.any(slot, ns.rdfs('label'))\n y = kb.any(day, ns.cal('dtstart'))\n cell = UI.widgets.newThing(detailsDoc)\n cellLookup[x.toNT() + y.toNT()] = cell\n insertables.push($rdf.st(slot, ns.sched('cell'), cell))\n insertables.push($rdf.st(cell, ns.sched('day'), possibleDays[j]))\n }\n }\n }\n\n const query = new $rdf.Query('TimesOfDay')\n const v = {}['day', 'label', 'value', 'slot', 'cell'].map(function (x) {\n query.consts.push(v[x] = $rdf.constiable(x)) })\n query.pat.add(invitation, ns.sched('slot'), v.slot)\n query.pat.add(v.slot, ns.rdfs('label'), v.label)\n query.pat.add(v.slot, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('timeOfDay'), v.value)\n query.pat.add(v.cell, ns.sched('day'), v.day)\n\n const options = {}\n options.set_x = kb.each(subject, ns.sched('slot')) // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) { return kb.any(opt, ns.rdfs('label')) })\n\n options.set_y = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future\n options.set_y = options.set_y.map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const possibleTimes = kb.each(invitation, ns.sched('option'))\n .map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(UI.matrix.matrixForQuery(\n dom, query, v.time, v.author, v.value, options, function () {}))\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.setAttribute('style', inputStyle)\n refreshButton.textContent = 'refresh'\n refreshButton.addEventListener('click', function (e) {\n refreshButton.disabled = true\n store.fetcher.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n }, false)\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n const dataPointForNT = []\n\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) { return (! z.sameTerm(me)) })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n // const point = cellLookup[x.toNT() + y.toNT()]\n\n if (y.sameTerm(me)) {\n const callbackFunction = function () { refreshCellColor(cell, value); }; // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('timeOfDay')\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate,\n possibleAvailabilities, selectOptions, resultsDoc, callbackFunction)\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n const myResponse = null\n responses.map(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r\n }\n })\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push($rdf.st(invitation, ns.sched('response'), myResponse, doc))\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.map(function (dataPoint) {\n const time = kb.any(dataPoint, ns.cal('dtstart'))\n dataPointForNT[time.toNT()] = dataPoint\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n if (dataPointForNT[possibleTimes[j].toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc))\n insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)) // @@\n dataPointForNT[possibleTimes[j].toNT()] = dataPoint\n }\n if (insertables.length) {\n store.updater.update([], insertables, function (uri, success, errorBody) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else { // no insertables\n displayTheMatrix()\n }\n }\n */\n // end setTimesOfDay\n\n // Read or create empty results file\n function getResults () {\n fetcher.nowOrWhenFetched(resultsDoc.uri, (ok, body, response) => {\n if (!ok) {\n if (response.status === 404) {\n // / Check explicitly for 404 error\n console.log('Initializing details file ' + resultsDoc)\n updater.put(resultsDoc, [], 'text/turtle', function (\n uri2,\n ok,\n message\n ) {\n if (ok) {\n clearElement(naviMain)\n showResults()\n } else {\n complainIfBad(\n ok,\n 'FAILED to create results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to craete results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n }\n })\n } else {\n // Other error, not 404 -- do not try to overwite the file\n complainIfBad(ok, 'FAILED to read results file: ' + body)\n }\n } else {\n // Happy read\n clearElement(naviMain)\n showResults()\n }\n })\n }\n\n function showResults () {\n // Now the form for responsing to the poll\n //\n\n // div.appendChild(dom.createElement('hr'))\n\n // const invitation = subject\n const title = kb.any(invitation, ns.cal('summary'))\n const comment = kb.any(invitation, ns.cal('comment'))\n const location = kb.any(invitation, ns.cal('location'))\n const div = naviMain\n if (title) div.appendChild(dom.createElement('h3')).textContent = title\n if (location) {\n div.appendChild(dom.createElement('address')).textContent =\n location.value\n }\n if (comment) {\n div.appendChild(dom.createElement('p')).textContent = comment.value\n }\n const author = kb.any(invitation, ns.dc('author'))\n if (author) {\n const authorName = kb.any(author, ns.foaf('name'))\n if (authorName) {\n div.appendChild(dom.createElement('p')).textContent = authorName\n }\n }\n\n const query = new $rdf.Query('Responses')\n const v = {}\n const vs = ['time', 'author', 'value', 'resp', 'cell']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(invitation, ns.sched('response'), v.resp)\n query.pat.add(v.resp, ns.dc('author'), v.author)\n query.pat.add(v.resp, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('availabilty'), v.value)\n query.pat.add(v.cell, ns.cal('dtstart'), v.time)\n\n // Sort by by person @@@\n\n const options = {}\n options.set_x = kb.each(subject, ns.sched('option')) // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) {\n return kb.any(opt, ns.cal('dtstart'))\n })\n\n options.set_y = kb.each(subject, ns.sched('response'))\n options.set_y = options.set_y.map(function (resp) {\n return kb.any(resp, ns.dc('author'))\n })\n\n const possibleTimes = kb\n .each(invitation, ns.sched('option'))\n .map(function (opt) {\n return kb.any(opt, ns.cal('dtstart'))\n })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(\n UI.matrix.matrixForQuery(\n dom,\n query,\n v.time,\n v.author,\n v.value,\n options,\n function () {}\n )\n )\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.setAttribute('style', inputStyle)\n // refreshButton.textContent = 'refresh' // noun_479395.svg\n const refreshIcon = dom.createElement('img')\n refreshIcon.setAttribute('src', UI.icons.iconBase + 'noun_479395.svg')\n refreshIcon.setAttribute('style', buttonIconStyle)\n refreshButton.appendChild(refreshIcon)\n refreshButton.addEventListener(\n 'click',\n function (_e) {\n refreshButton.disabled = true\n kb.fetcher.refresh(resultsDoc, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n },\n false\n )\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n // @@ Give other combos too-- see schedule ontology\n // const possibleAvailabilities = [ SCHED('No'), SCHED('Maybe'), SCHED('Yes') ]\n\n // const me = authn.currentUser()\n\n const dataPointForNT = []\n\n const loginContext = { div: naviCenter, dom: dom }\n UI.login.ensureLoggedIn(loginContext).then(context => {\n const me = context.me\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) {\n return !z.sameTerm(me)\n })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n if (value !== null) {\n kb.fetcher.nowOrWhenFetched(\n value.uri.split('#')[0],\n undefined,\n function (ok, _error) {\n if (ok) refreshCellColor(cell, value)\n }\n )\n }\n if (y.sameTerm(me)) {\n const callbackFunction = function () {\n refreshCellColor(cell, value)\n } // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('availabilty')\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(\n dom,\n kb,\n cellSubject,\n predicate,\n possibleAvailabilities,\n selectOptions,\n resultsDoc,\n callbackFunction\n )\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n let myResponse = null\n responses.forEach(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r\n }\n })\n\n const insertables = [] // list of statements to be stored\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push(\n $rdf.st(invitation, ns.sched('response'), myResponse, doc)\n )\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.forEach(function (dataPoint) {\n const time = kb.any(dataPoint, ns.cal('dtstart'))\n dataPointForNT[time.toNT()] = dataPoint\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n if (dataPointForNT[possibleTimes[j].toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push(\n $rdf.st(myResponse, ns.sched('cell'), dataPoint, doc)\n )\n insertables.push(\n $rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)\n ) // @@\n dataPointForNT[possibleTimes[j].toNT()] = dataPoint\n }\n if (insertables.length) {\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else {\n // no insertables\n displayTheMatrix()\n }\n }) // @@@@ end of .then\n\n // If I made this in the first place, allow me to edit it.\n // @@ optionally -- allows others to if according to original\n const instanceCreator = kb.any(subject, ns.foaf('maker')) // owner?\n if (!instanceCreator || instanceCreator.sameTerm(me)) {\n const editButton = dom.createElement('button')\n editButton.setAttribute('style', inputStyle)\n // editButton.textContent = '(Modify the poll)' // noun_344563.svg\n const editIcon = dom.createElement('img')\n editIcon.setAttribute('src', UI.icons.iconBase + 'noun_344563.svg')\n editIcon.setAttribute('style', buttonIconStyle)\n editButton.appendChild(editIcon)\n editButton.addEventListener(\n 'click',\n function (_e) {\n clearElement(div)\n showForms()\n },\n false\n )\n clearElement(naviLeft)\n naviLeft.appendChild(editButton)\n }\n\n // div.appendChild(editButton)\n\n clearElement(naviRight)\n naviRight.appendChild(newInstanceButton())\n } // showResults\n\n const div = dom.createElement('div')\n const structure = div.appendChild(dom.createElement('table')) // @@ make responsive style\n structure.setAttribute(\n 'style',\n 'background-color: white; min-width: 40em; min-height: 13em;'\n )\n\n const naviLoginoutTR = structure.appendChild(dom.createElement('tr'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n\n const logInOutButton = null\n /*\n const logInOutButton = UI.login.loginStatusBox(dom, setUser)\n // floating divs lead to a mess\n // logInOutButton.setAttribute('style', 'float: right') // float the beginning of the end\n naviLoginout3.appendChild(logInOutButton)\n logInOutButton.setAttribute('style', 'margin-right: 0em;')\n */\n\n const naviTop = structure.appendChild(dom.createElement('tr'))\n const naviMain = naviTop.appendChild(dom.createElement('td'))\n naviMain.setAttribute('colspan', '3')\n\n const naviMenu = structure.appendChild(dom.createElement('tr'))\n naviMenu.setAttribute('class', 'naviMenu')\n naviMenu.setAttribute(\n 'style',\n ' text-align: middle; vertical-align: middle; padding-top: 4em; '\n )\n // naviMenu.setAttribute('style', 'margin-top: 3em;')\n const naviLeft = naviMenu.appendChild(dom.createElement('td'))\n const naviCenter = naviMenu.appendChild(dom.createElement('td'))\n const naviRight = naviMenu.appendChild(dom.createElement('td'))\n\n getForms()\n\n return div\n } // render\n} // property list\n// ends\n"],"mappings":"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IAEA,EAHF;QAIA,IAAMwG,MAAM,GACV,YACArL,EAAE,CACCsL,IADH,CACQxL,OADR,EACiBZ,EAAE,CAACE,KAAH,CAAS,SAAT,CADjB,EAEGmM,GAFH,CAEO,UAAUC,GAAV,EAAe;UAClB,IAAMC,IAAI,GAAGzL,EAAE,CAACuC,GAAH,CAAOiJ,GAAP,EAAYtM,EAAE,CAACgD,IAAH,CAAQ,MAAR,CAAZ,CAAb;UACA,OAAOuJ,IAAI,GAAGA,IAAI,CAAChJ,GAAL,CAASiJ,OAAT,CAAiB,SAAjB,EAA4B,EAA5B,CAAH,GAAqC,EAAhD;QACD,CALH,EAMGC,IANH,CAMQ,GANR,CADA,GAQA,WARA,GASAC,kBAAkB,CAACV,KAAK,GAAG,sBAAT,CATlB,GAUA,QAVA,GAWAU,kBAAkB,CAChBV,KAAK,GAAG,2BAAR,GAAsCpL,OAAtC,GAAgD,IADhC,CAZpB,CALY,CAoBZ;;QAEAoB,OAAO,CAACC,GAAR,CAAY,WAAWkK,MAAvB;QACAQ,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBV,MAAvB;MACD,CA1BH,EA2BE,KA3BF;IA6BD,CA7LD,CA9OkC,CA2ahC;IAEF;;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sharingPane.js","names":["sharingPane","icon","icons","iconBase","name","label","subject","context","store","session","t","findTypeURIs","ns","ldp","uri","render","dom","noun","getNoun","div","createElement","classList","add","aclControl","preventBrowserDropEvents","appendChild","ACLControlBox5"],"sources":["../../src/sharing/sharingPane.ts"],"sourcesContent":["/* Sharing Pane\n **\n ** This outline pane allows a user to view and adjust the sharing -- access control lists\n ** for anything which has that capability.\n **\n ** I am using in places single quotes strings like 'this'\n ** where internationalization (\"i18n\") is not a problem, and double quoted\n ** like \"this\" where the string is seen by the user and so I18n is an issue.\n */\n\nimport { aclControl, icons, ns } from 'solid-ui'\n\nconst sharingPane = {\n icon: icons.iconBase + 'padlock-timbl.svg',\n\n name: 'sharing',\n\n label: (subject, context) => {\n const store = context.session.store\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Resource').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('Container').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('BasicContainer').uri]) return 'Sharing' // @@ be more sophisticated?\n // check being allowed to see/change sharing?\n return null // No under other circumstances\n },\n\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store\n const noun = getNoun()\n\n const div = dom.createElement('div')\n div.classList.add('sharingPane')\n aclControl.preventBrowserDropEvents(dom)\n div.appendChild(aclControl.ACLControlBox5(subject, context, noun, store))\n return div\n\n function getNoun () {\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n return 'folder'\n }\n return 'file'\n }\n }\n}\n\nexport default sharingPane\n"],"mappings":";;;;;;;AAUA;;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA,IAAMA,WAAW,GAAG;EAClBC,IAAI,EAAEC,eAAMC,QAAN,GAAiB,mBADL;EAGlBC,IAAI,EAAE,SAHY;EAKlBC,KAAK,EAAE,eAACC,OAAD,EAAUC,OAAV,EAAsB;IAC3B,IAAMC,KAAK,GAAGD,OAAO,CAACE,OAAR,CAAgBD,KAA9B;IACA,IAAME,CAAC,GAAGF,KAAK,CAACG,YAAN,CAAmBL,OAAnB,CAAV;IACA,IAAII,CAAC,CAACE,YAAGC,GAAH,CAAO,UAAP,EAAmBC,GAApB,CAAL,EAA+B,OAAO,SAAP,CAHJ,CAGqB;;IAChD,IAAIJ,CAAC,CAACE,YAAGC,GAAH,CAAO,WAAP,EAAoBC,GAArB,CAAL,EAAgC,OAAO,SAAP,CAJL,CAIsB;;IACjD,IAAIJ,CAAC,CAACE,YAAGC,GAAH,CAAO,gBAAP,EAAyBC,GAA1B,CAAL,EAAqC,OAAO,SAAP,CALV,CAK2B;IACtD;;IACA,OAAO,IAAP,CAP2B,CAOf;EACb,CAbiB;EAelBC,MAAM,EAAE,gBAACT,OAAD,EAAUC,OAAV,EAAsB;IAC5B,IAAMS,GAAG,GAAGT,OAAO,CAACS,GAApB;IACA,IAAMR,KAAK,GAAGD,OAAO,CAACE,OAAR,CAAgBD,KAA9B;IACA,IAAMS,IAAI,GAAGC,OAAO,EAApB;IAEA,IAAMC,GAAG,GAAGH,GAAG,CAACI,aAAJ,CAAkB,KAAlB,CAAZ;IACAD,GAAG,CAACE,SAAJ,CAAcC,GAAd,CAAkB,aAAlB;;IACAC,oBAAWC,wBAAX,CAAoCR,GAApC;;IACAG,GAAG,CAACM,WAAJ,CAAgBF,oBAAWG,cAAX,CAA0BpB,OAA1B,EAAmCC,OAAnC,EAA4CU,IAA5C,EAAkDT,KAAlD,CAAhB;IACA,OAAOW,GAAP;;IAEA,SAASD,OAAT,GAAoB;MAClB,IAAMR,CAAC,GAAGF,KAAK,CAACG,YAAN,CAAmBL,OAAnB,CAAV;;MACA,IAAII,CAAC,CAACE,YAAGC,GAAH,CAAO,gBAAP,EAAyBC,GAA1B,CAAD,IAAmCJ,CAAC,CAACE,YAAGC,GAAH,CAAO,WAAP,EAAoBC,GAArB,CAAxC,EAAmE;QACjE,OAAO,QAAP;MACD;;MACD,OAAO,MAAP;IACD;EACF;AAjCiB,CAApB;eAoCed,W"}
1
+ {"version":3,"file":"sharingPane.js","names":["sharingPane","icon","icons","iconBase","name","label","subject","context","store","session","t","findTypeURIs","ns","ldp","uri","render","dom","noun","getNoun","div","createElement","classList","add","aclControl","preventBrowserDropEvents","appendChild","ACLControlBox5"],"sources":["../../src/sharing/sharingPane.ts"],"sourcesContent":["/* Sharing Pane\n **\n ** This outline pane allows a user to view and adjust the sharing -- access control lists\n ** for anything which has that capability.\n **\n ** I am using in places single quotes strings like 'this'\n ** where internationalization (\"i18n\") is not a problem, and double quoted\n ** like \"this\" where the string is seen by the user and so I18n is an issue.\n */\n\nimport { aclControl, icons, ns } from 'solid-ui'\n\nconst sharingPane = {\n icon: icons.iconBase + 'padlock-timbl.svg',\n\n name: 'sharing',\n\n label: (subject, context) => {\n const store = context.session.store\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Resource').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('Container').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('BasicContainer').uri]) return 'Sharing' // @@ be more sophisticated?\n // check being allowed to see/change sharing?\n return null // No under other circumstances\n },\n\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store\n const noun = getNoun()\n\n const div = dom.createElement('div')\n div.classList.add('sharingPane')\n aclControl.preventBrowserDropEvents(dom)\n div.appendChild(aclControl.ACLControlBox5(subject, context, noun, store))\n return div\n\n function getNoun () {\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n return 'folder'\n }\n return 'file'\n }\n }\n}\n\nexport default sharingPane\n"],"mappings":";;;;;;;AAUA;;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA,IAAMA,WAAW,GAAG;EAClBC,IAAI,EAAEC,cAAA,CAAMC,QAAN,GAAiB,mBADL;EAGlBC,IAAI,EAAE,SAHY;EAKlBC,KAAK,EAAE,eAACC,OAAD,EAAUC,OAAV,EAAsB;IAC3B,IAAMC,KAAK,GAAGD,OAAO,CAACE,OAAR,CAAgBD,KAA9B;IACA,IAAME,CAAC,GAAGF,KAAK,CAACG,YAAN,CAAmBL,OAAnB,CAAV;IACA,IAAII,CAAC,CAACE,WAAA,CAAGC,GAAH,CAAO,UAAP,EAAmBC,GAApB,CAAL,EAA+B,OAAO,SAAP,CAHJ,CAGqB;;IAChD,IAAIJ,CAAC,CAACE,WAAA,CAAGC,GAAH,CAAO,WAAP,EAAoBC,GAArB,CAAL,EAAgC,OAAO,SAAP,CAJL,CAIsB;;IACjD,IAAIJ,CAAC,CAACE,WAAA,CAAGC,GAAH,CAAO,gBAAP,EAAyBC,GAA1B,CAAL,EAAqC,OAAO,SAAP,CALV,CAK2B;IACtD;;IACA,OAAO,IAAP,CAP2B,CAOf;EACb,CAbiB;EAelBC,MAAM,EAAE,gBAACT,OAAD,EAAUC,OAAV,EAAsB;IAC5B,IAAMS,GAAG,GAAGT,OAAO,CAACS,GAApB;IACA,IAAMR,KAAK,GAAGD,OAAO,CAACE,OAAR,CAAgBD,KAA9B;IACA,IAAMS,IAAI,GAAGC,OAAO,EAApB;IAEA,IAAMC,GAAG,GAAGH,GAAG,CAACI,aAAJ,CAAkB,KAAlB,CAAZ;IACAD,GAAG,CAACE,SAAJ,CAAcC,GAAd,CAAkB,aAAlB;;IACAC,mBAAA,CAAWC,wBAAX,CAAoCR,GAApC;;IACAG,GAAG,CAACM,WAAJ,CAAgBF,mBAAA,CAAWG,cAAX,CAA0BpB,OAA1B,EAAmCC,OAAnC,EAA4CU,IAA5C,EAAkDT,KAAlD,CAAhB;IACA,OAAOW,GAAP;;IAEA,SAASD,OAAT,GAAoB;MAClB,IAAMR,CAAC,GAAGF,KAAK,CAACG,YAAN,CAAmBL,OAAnB,CAAV;;MACA,IAAII,CAAC,CAACE,WAAA,CAAGC,GAAH,CAAO,gBAAP,EAAyBC,GAA1B,CAAD,IAAmCJ,CAAC,CAACE,WAAA,CAAGC,GAAH,CAAO,WAAP,EAAoBC,GAArB,CAAxC,EAAmE;QACjE,OAAO,QAAP;MACD;;MACD,OAAO,MAAP;IACD;EACF;AAjCiB,CAApB;eAoCed,W"}
@@ -1 +1 @@
1
- {"version":3,"file":"socialPane.js","names":["module","exports","icon","UI","icons","originalIconBase","name","label","subject","context","kb","session","store","types","findTypeURIs","ns","foaf","uri","vcard","render","s","dom","common","x","y","both","i","length","j","sameTerm","push","people","n","res","say","str","console","log","p","createElement","textContent","tips","appendChild","link","contents","a","setAttribute","text","createTextNode","buildCheckboxForm","lab","statement","state","f","input","tx","className","boxHandler","_e","checked","outliner","UserInput","sparqler","insert_statement","success","errorBody","alert","add","predicate","object","why","e","error","delete_statement","removeMany","addEventListener","oneFriend","friend","_confirmed","widgets","personTR","getOutliner","div","navBlockStyle","mainBlockStyle","foafPicStyle","structure","tr","left","middle","right","tools","style","cssText","mainTable","src","any","img","anyValue","h3","me","authn","currentUser","meUri","loginOutButton","login","loginStatusBox","webIdUri","sym","refreshTree","thisIsYou","sameThings","knows","familiar","friends","each","profile","editable","incoming","outgoing","works","undefined","message","whether","rdf","utils","escapeForXML","cme","canon","outgoingSt","statementsMatching","youAndThem","Statement","myFriends","mutualFriends","attachmentList","doc","modify","noun","triageFriends","confirmed","unconfirmed","requests","found","cases","thisCase","htr","items","j9","sort","last","fr","j7","$rdf","keepThisCodeForLaterButDisableFerossConstantConditionPolice","preds","i6","pred","sts","uris","j5","st","last2","lab2","k","hostlabel","l","indexOf","r","r2","lastIndexOf","slice","t","d","preds2","i2","sts2","appendPropertyTRs","_pred"],"sources":["../src/socialPane.js"],"sourcesContent":["/* Social Pane\n **\n ** This outline pane provides social network functions\n ** Using for example the FOAF ontology.\n ** Goal: A *distributed* version of facebook, advogato, etc etc\n ** - Similarly easy user interface, but data storage distributed\n ** - Read and write both user-private (address book) and public data clearly\n ** -- todo: use common code to get username and load profile and set 'me'\n */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nimport * as $rdf from 'rdflib'\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'foaf/foafTiny.gif',\n\n name: 'social',\n\n label: function (subject, context) {\n const kb = context.session.store\n const types = kb.findTypeURIs(subject)\n if (\n types[UI.ns.foaf('Person').uri] ||\n types[UI.ns.vcard('Individual').uri]\n ) {\n return 'Friends'\n }\n return null\n },\n\n render: function (s, context) {\n const dom = context.dom\n const common = function (x, y) {\n // Find common members of two lists\n const both = []\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (y[j].sameTerm(x[i])) {\n both.push(y[j])\n break\n }\n }\n }\n return both\n }\n\n const people = function (n) {\n let res = ' '\n res += n || 'no'\n if (n === 1) return res + ' person'\n return res + ' people'\n }\n const say = function (str) {\n console.log(str)\n const p = dom.createElement('p')\n p.textContent = str\n tips.appendChild(p)\n }\n\n const link = function (contents, uri) {\n if (!uri) return contents\n const a = dom.createElement('a')\n a.setAttribute('href', uri)\n a.appendChild(contents)\n return a\n }\n\n const text = function (str) {\n return dom.createTextNode(str)\n }\n\n const buildCheckboxForm = function (lab, statement, state) {\n const f = dom.createElement('form')\n const input = dom.createElement('input')\n f.appendChild(input)\n const tx = dom.createTextNode(lab)\n tx.className = 'question'\n f.appendChild(tx)\n input.setAttribute('type', 'checkbox')\n const boxHandler = function (_e) {\n tx.className = 'pendingedit'\n // alert('Should be greyed out')\n if (this.checked) {\n // Add link\n try {\n outliner.UserInput.sparqler.insert_statement(statement, function (\n uri,\n success,\n errorBody\n ) {\n tx.className = 'question'\n if (!success) {\n UI.log.alert(\n null,\n 'Message',\n 'Error occurs while inserting ' +\n statement +\n '\\n\\n' +\n errorBody\n )\n input.checked = false // rollback UI\n return\n }\n kb.add(\n statement.subject,\n statement.predicate,\n statement.object,\n statement.why\n )\n })\n } catch (e) {\n UI.log.error('Data write fails:' + e)\n UI.log.alert('Data write fails:' + e)\n input.checked = false // rollback UI\n tx.className = 'question'\n }\n } else {\n // Remove link\n try {\n outliner.UserInput.sparqler.delete_statement(statement, function (\n uri,\n success,\n errorBody\n ) {\n tx.className = 'question'\n if (!success) {\n UI.log.alert(\n 'Error occurs while deleting ' +\n statement +\n '\\n\\n' +\n errorBody\n )\n this.checked = true // Rollback UI\n } else {\n kb.removeMany(\n statement.subject,\n statement.predicate,\n statement.object,\n statement.why\n )\n }\n })\n } catch (e) {\n UI.log.alert('Delete fails:' + e)\n this.checked = true // Rollback UI\n // return\n }\n }\n }\n input.checked = state\n input.addEventListener('click', boxHandler, false)\n return f\n }\n\n const oneFriend = function (friend, _confirmed) {\n return UI.widgets.personTR(dom, UI.ns.foaf('knows'), friend, {})\n }\n\n // ////////// Body of render():\n\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const div = dom.createElement('div')\n div.setAttribute('class', 'socialPane')\n const foaf = UI.ns.foaf\n const vcard = UI.ns.vcard\n\n // extracted from tabbedtab.css 2017-03-21\n const navBlockStyle =\n 'background-color: #eee; width: 25%; border: 0; padding: 0.5em; margin: 0;'\n const mainBlockStyle =\n 'background-color: #fff; color: #000; width: 46%; margin: 0; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; padding: 0;'\n const foafPicStyle = ' width: 100% ; border: none; margin: 0; padding: 0;'\n\n const structure = div.appendChild(dom.createElement('table'))\n const tr = structure.appendChild(dom.createElement('tr'))\n const left = tr.appendChild(dom.createElement('td'))\n const middle = tr.appendChild(dom.createElement('td'))\n const right = tr.appendChild(dom.createElement('td'))\n\n const tools = left\n tools.style.cssText = navBlockStyle\n const mainTable = middle.appendChild(dom.createElement('table'))\n mainTable.style.cssText = mainBlockStyle\n const tips = right\n tips.style.cssText = navBlockStyle\n\n // Image top left\n const src = kb.any(s, foaf('img')) || kb.any(s, foaf('depiction'))\n if (src) {\n const img = dom.createElement('IMG')\n img.setAttribute('src', src.uri) // w640 h480\n // img.className = 'foafPic'\n img.style.cssText = foafPicStyle\n tools.appendChild(img)\n }\n const name = kb.anyValue(s, foaf('name')) || '???'\n let h3 = dom.createElement('H3')\n h3.appendChild(dom.createTextNode(name))\n\n let me = authn.currentUser()\n const meUri = me ? me.uri : null\n\n // @@ Add: event handler to redraw the stuff below when me changes.\n const loginOutButton = UI.login.loginStatusBox(dom, webIdUri => {\n me = kb.sym(webIdUri)\n // @@ To be written: redraw as a function the new me\n // @@ refresh the sidebars\n UI.widgets.refreshTree(div) // this refreshes the middle at least\n })\n\n tips.appendChild(loginOutButton)\n\n const thisIsYou = me && kb.sameThings(me, s)\n\n const knows = foaf('knows')\n // var givenName = kb.sym('http://www.w3.org/2000/10/swap/pim/contact#givenName')\n const familiar =\n kb.anyValue(s, foaf('givenname')) ||\n kb.anyValue(s, foaf('firstName')) ||\n kb.anyValue(s, foaf('nick')) ||\n kb.anyValue(s, foaf('name')) ||\n kb.anyValue(s, vcard('fn'))\n const friends = kb.each(s, knows)\n\n // Do I have a public profile document?\n let profile = null // This could be SPARQL { ?me foaf:primaryTopic [ a foaf:PersonalProfileDocument ] }\n let editable = false\n let incoming\n let outgoing\n if (me) {\n // The definition of FAF personal profile document is ..\n const works = kb.each(undefined, foaf('primaryTopic'), me) // having me as primary topic\n let message = ''\n for (let i = 0; i < works.length; i++) {\n if (\n kb.whether(\n works[i],\n UI.ns.rdf('type'),\n foaf('PersonalProfileDocument')\n )\n ) {\n editable = outliner.UserInput.sparqler.editable(works[i].uri, kb)\n if (!editable) {\n message +=\n 'Your profile <' +\n UI.utils.escapeForXML(works[i].uri) +\n '> is not remotely editable.'\n } else {\n profile = works[i]\n break\n }\n }\n }\n\n if (!profile) {\n say(\n message + \"\\nI couldn't find your editable personal profile document.\"\n )\n } else {\n say('Editing your profile ' + profile + '.')\n // Do I have an EDITABLE profile?\n editable = outliner.UserInput.sparqler.editable(profile.uri, kb)\n }\n\n if (thisIsYou) {\n // This is about me\n // pass... @@\n } else {\n // This is about someone else\n // My relationship with this person\n\n h3 = dom.createElement('h3')\n h3.appendChild(dom.createTextNode('You and ' + familiar))\n tools.appendChild(h3)\n\n const cme = kb.canon(me)\n incoming = kb.whether(s, knows, cme)\n outgoing = false\n const outgoingSt = kb.statementsMatching(cme, knows, s)\n if (outgoingSt.length) {\n outgoing = true\n if (!profile) profile = outgoingSt[0].why\n }\n\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n\n const youAndThem = function () {\n tr.appendChild(link(text('You'), meUri))\n tr.appendChild(text(' and '))\n tr.appendChild(link(text(familiar), s.uri))\n }\n\n if (!incoming) {\n if (!outgoing) {\n youAndThem()\n tr.appendChild(text(' have not said you know each other.'))\n } else {\n tr.appendChild(link(text('You'), meUri))\n tr.appendChild(text(' know '))\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text(' (unconfirmed)'))\n }\n } else {\n if (!outgoing) {\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text(' knows '))\n tr.appendChild(link(text('you'), meUri))\n tr.appendChild(text(' (unconfirmed).')) // @@\n tr.appendChild(text(' confirm you know '))\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text('.'))\n } else {\n youAndThem()\n tr.appendChild(text(' say you know each other.'))\n }\n }\n\n if (editable) {\n const f = buildCheckboxForm(\n 'You know ' + familiar,\n new UI.rdf.Statement(me, knows, s, profile),\n outgoing\n )\n tools.appendChild(f)\n } // editable\n\n // //////////////// Mutual friends\n if (friends) {\n const myFriends = kb.each(me, foaf('knows'))\n if (myFriends.length) {\n const mutualFriends = common(friends, myFriends)\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n tr.appendChild(\n dom.createTextNode(\n 'You' +\n (familiar ? ' and ' + familiar : '') +\n ' know' +\n people(mutualFriends.length) +\n ' found in common'\n )\n )\n if (mutualFriends) {\n for (let i = 0; i < mutualFriends.length; i++) {\n tr.appendChild(\n dom.createTextNode(', ' + UI.utils.label(mutualFriends[i]))\n )\n }\n }\n }\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n } // friends\n } // About someone else\n } // me is defined\n // End of you and s\n\n // div.appendChild(dom.createTextNode(plural(friends.length, 'acquaintance') +'. '))\n\n // ///////////////////////////////////////////// Main block\n //\n // Should: Find the intersection and difference sets\n\n // List all x such that s knows x.\n UI.widgets.attachmentList(dom, s, mainTable, {\n doc: profile,\n modify: !!editable,\n predicate: foaf('knows'),\n noun: 'friend'\n })\n\n // Figure out which are reciprocated:\n // @@ Does not look up profiles\n // Does distinguish reciprocated from unreciprocated friendships\n //\n function triageFriends (s) {\n outgoing = kb.each(s, foaf('knows'))\n incoming = kb.each(undefined, foaf('knows'), s) // @@ have to load the friends\n const confirmed = []\n const unconfirmed = []\n const requests = []\n\n for (let i = 0; i < outgoing.length; i++) {\n const friend = outgoing[i]\n let found = false\n for (let j = 0; j < incoming.length; j++) {\n if (incoming[j].sameTerm(friend)) {\n found = true\n break\n }\n }\n if (found) confirmed.push(friend)\n else unconfirmed.push(friend)\n } // outgoing\n\n for (let i = 0; i < incoming.length; i++) {\n const friend = incoming[i]\n // var lab = UI.utils.label(friend)\n let found = false\n for (let j = 0; j < outgoing.length; j++) {\n if (outgoing[j].sameTerm(friend)) {\n found = true\n break\n }\n }\n if (!found) requests.push(friend)\n } // incoming\n\n const cases = [\n ['Acquaintances', outgoing],\n ['Mentioned as acquaintances by: ', requests]\n ]\n for (let i = 0; i < cases.length; i++) {\n const thisCase = cases[i]\n const friends = thisCase[1]\n if (friends.length === 0) continue // Skip empty sections (sure?)\n\n const h3 = dom.createElement('h3')\n h3.textContent = thisCase[0]\n const htr = dom.createElement('tr')\n htr.appendChild(h3)\n mainTable.appendChild(htr)\n\n const items = []\n for (let j9 = 0; j9 < friends.length; j9++) {\n items.push([UI.utils.label(friends[j9]), friends[j9]])\n }\n items.sort()\n let last = null\n let fr\n for (let j7 = 0; j7 < items.length; j7++) {\n fr = items[j7][1]\n if (fr.sameTerm(last)) continue // unique\n last = fr\n if (UI.utils.label(fr) !== '...') {\n // This check is to avoid bnodes with no labels attached\n // appearing in the friends list with \"...\" - Oshani\n mainTable.appendChild(oneFriend(fr))\n }\n }\n }\n }\n if ($rdf.keepThisCodeForLaterButDisableFerossConstantConditionPolice) {\n triageFriends(s)\n }\n // //////////////////////////////////// Basic info on left\n\n h3 = dom.createElement('h3')\n h3.appendChild(dom.createTextNode('Basic Information'))\n tools.appendChild(h3)\n\n // For each home page like thing make a label which will\n // make sense and add the domain (like \"w3.org blog\") if there are more than one of the same type\n //\n const preds = [\n UI.ns.foaf('homepage'),\n UI.ns.foaf('weblog'),\n UI.ns.foaf('workplaceHomepage'),\n UI.ns.foaf('schoolHomepage')\n ]\n for (let i6 = 0; i6 < preds.length; i6++) {\n const pred = preds[i6]\n const sts = kb.statementsMatching(s, pred)\n if (sts.length === 0) {\n // if (editable) say(\"No home page set. Use the blue + icon at the bottom of the main view to add information.\")\n } else {\n const uris = []\n for (let j5 = 0; j5 < sts.length; j5++) {\n const st = sts[j5]\n if (st.object.uri) uris.push(st.object.uri) // Ignore if not symbol\n }\n uris.sort()\n let last2 = ''\n let lab2\n for (let k = 0; k < uris.length; k++) {\n const uri = uris[k]\n if (uri === last2) continue // uniques only\n last2 = uri\n let hostlabel = ''\n lab2 = UI.utils.label(pred)\n if (uris.length > 1) {\n const l = uri.indexOf('//')\n if (l > 0) {\n let r = uri.indexOf('/', l + 2)\n const r2 = uri.lastIndexOf('.', r)\n if (r2 > 0) r = r2\n hostlabel = uri.slice(l + 2, r)\n }\n }\n if (hostlabel) lab2 = hostlabel + ' ' + lab2 // disambiguate\n const t = dom.createTextNode(lab2)\n const a = dom.createElement('a')\n a.appendChild(t)\n a.setAttribute('href', uri)\n const d = dom.createElement('div')\n // d.className = 'social_linkButton'\n d.style.cssText =\n 'width: 80%; background-color: #fff; border: solid 0.05em #ccc; margin-top: 0.1em; margin-bottom: 0.1em; padding: 0.1em; text-align: center;'\n d.appendChild(a)\n tools.appendChild(d)\n }\n }\n }\n\n const preds2 = [UI.ns.foaf('openid'), UI.ns.foaf('nick')]\n for (let i2 = 0; i2 < preds2.length; i2++) {\n const pred = preds2[i2]\n const sts2 = kb.statementsMatching(s, pred)\n if (sts2.length === 0) {\n // if (editable) say(\"No home page set. Use the blue + icon at the bottom of the main view to add information.\")\n } else {\n outliner.appendPropertyTRs(tools, sts2, false, function (_pred) {\n return true\n })\n }\n }\n\n return div\n } // render()\n} //\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"socialPane.js","names":["module","exports","icon","UI","icons","originalIconBase","name","label","subject","context","kb","session","store","types","findTypeURIs","ns","foaf","uri","vcard","render","s","dom","common","x","y","both","i","length","j","sameTerm","push","people","n","res","say","str","console","log","p","createElement","textContent","tips","appendChild","link","contents","a","setAttribute","text","createTextNode","buildCheckboxForm","lab","statement","state","f","input","tx","className","boxHandler","_e","checked","outliner","UserInput","sparqler","insert_statement","success","errorBody","alert","add","predicate","object","why","e","error","delete_statement","removeMany","addEventListener","oneFriend","friend","_confirmed","widgets","personTR","getOutliner","div","navBlockStyle","mainBlockStyle","foafPicStyle","structure","tr","left","middle","right","tools","style","cssText","mainTable","src","any","img","anyValue","h3","me","authn","currentUser","meUri","loginOutButton","login","loginStatusBox","webIdUri","sym","refreshTree","thisIsYou","sameThings","knows","familiar","friends","each","profile","editable","incoming","outgoing","works","undefined","message","whether","rdf","utils","escapeForXML","cme","canon","outgoingSt","statementsMatching","youAndThem","Statement","myFriends","mutualFriends","attachmentList","doc","modify","noun","triageFriends","confirmed","unconfirmed","requests","found","cases","thisCase","htr","items","j9","sort","last","fr","j7","$rdf","keepThisCodeForLaterButDisableFerossConstantConditionPolice","preds","i6","pred","sts","uris","j5","st","last2","lab2","k","hostlabel","l","indexOf","r","r2","lastIndexOf","slice","t","d","preds2","i2","sts2","appendPropertyTRs","_pred"],"sources":["../src/socialPane.js"],"sourcesContent":["/* Social Pane\n **\n ** This outline pane provides social network functions\n ** Using for example the FOAF ontology.\n ** Goal: A *distributed* version of facebook, advogato, etc etc\n ** - Similarly easy user interface, but data storage distributed\n ** - Read and write both user-private (address book) and public data clearly\n ** -- todo: use common code to get username and load profile and set 'me'\n */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nimport * as $rdf from 'rdflib'\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'foaf/foafTiny.gif',\n\n name: 'social',\n\n label: function (subject, context) {\n const kb = context.session.store\n const types = kb.findTypeURIs(subject)\n if (\n types[UI.ns.foaf('Person').uri] ||\n types[UI.ns.vcard('Individual').uri]\n ) {\n return 'Friends'\n }\n return null\n },\n\n render: function (s, context) {\n const dom = context.dom\n const common = function (x, y) {\n // Find common members of two lists\n const both = []\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (y[j].sameTerm(x[i])) {\n both.push(y[j])\n break\n }\n }\n }\n return both\n }\n\n const people = function (n) {\n let res = ' '\n res += n || 'no'\n if (n === 1) return res + ' person'\n return res + ' people'\n }\n const say = function (str) {\n console.log(str)\n const p = dom.createElement('p')\n p.textContent = str\n tips.appendChild(p)\n }\n\n const link = function (contents, uri) {\n if (!uri) return contents\n const a = dom.createElement('a')\n a.setAttribute('href', uri)\n a.appendChild(contents)\n return a\n }\n\n const text = function (str) {\n return dom.createTextNode(str)\n }\n\n const buildCheckboxForm = function (lab, statement, state) {\n const f = dom.createElement('form')\n const input = dom.createElement('input')\n f.appendChild(input)\n const tx = dom.createTextNode(lab)\n tx.className = 'question'\n f.appendChild(tx)\n input.setAttribute('type', 'checkbox')\n const boxHandler = function (_e) {\n tx.className = 'pendingedit'\n // alert('Should be greyed out')\n if (this.checked) {\n // Add link\n try {\n outliner.UserInput.sparqler.insert_statement(statement, function (\n uri,\n success,\n errorBody\n ) {\n tx.className = 'question'\n if (!success) {\n UI.log.alert(\n null,\n 'Message',\n 'Error occurs while inserting ' +\n statement +\n '\\n\\n' +\n errorBody\n )\n input.checked = false // rollback UI\n return\n }\n kb.add(\n statement.subject,\n statement.predicate,\n statement.object,\n statement.why\n )\n })\n } catch (e) {\n UI.log.error('Data write fails:' + e)\n UI.log.alert('Data write fails:' + e)\n input.checked = false // rollback UI\n tx.className = 'question'\n }\n } else {\n // Remove link\n try {\n outliner.UserInput.sparqler.delete_statement(statement, function (\n uri,\n success,\n errorBody\n ) {\n tx.className = 'question'\n if (!success) {\n UI.log.alert(\n 'Error occurs while deleting ' +\n statement +\n '\\n\\n' +\n errorBody\n )\n this.checked = true // Rollback UI\n } else {\n kb.removeMany(\n statement.subject,\n statement.predicate,\n statement.object,\n statement.why\n )\n }\n })\n } catch (e) {\n UI.log.alert('Delete fails:' + e)\n this.checked = true // Rollback UI\n // return\n }\n }\n }\n input.checked = state\n input.addEventListener('click', boxHandler, false)\n return f\n }\n\n const oneFriend = function (friend, _confirmed) {\n return UI.widgets.personTR(dom, UI.ns.foaf('knows'), friend, {})\n }\n\n // ////////// Body of render():\n\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const div = dom.createElement('div')\n div.setAttribute('class', 'socialPane')\n const foaf = UI.ns.foaf\n const vcard = UI.ns.vcard\n\n // extracted from tabbedtab.css 2017-03-21\n const navBlockStyle =\n 'background-color: #eee; width: 25%; border: 0; padding: 0.5em; margin: 0;'\n const mainBlockStyle =\n 'background-color: #fff; color: #000; width: 46%; margin: 0; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; padding: 0;'\n const foafPicStyle = ' width: 100% ; border: none; margin: 0; padding: 0;'\n\n const structure = div.appendChild(dom.createElement('table'))\n const tr = structure.appendChild(dom.createElement('tr'))\n const left = tr.appendChild(dom.createElement('td'))\n const middle = tr.appendChild(dom.createElement('td'))\n const right = tr.appendChild(dom.createElement('td'))\n\n const tools = left\n tools.style.cssText = navBlockStyle\n const mainTable = middle.appendChild(dom.createElement('table'))\n mainTable.style.cssText = mainBlockStyle\n const tips = right\n tips.style.cssText = navBlockStyle\n\n // Image top left\n const src = kb.any(s, foaf('img')) || kb.any(s, foaf('depiction'))\n if (src) {\n const img = dom.createElement('IMG')\n img.setAttribute('src', src.uri) // w640 h480\n // img.className = 'foafPic'\n img.style.cssText = foafPicStyle\n tools.appendChild(img)\n }\n const name = kb.anyValue(s, foaf('name')) || '???'\n let h3 = dom.createElement('H3')\n h3.appendChild(dom.createTextNode(name))\n\n let me = authn.currentUser()\n const meUri = me ? me.uri : null\n\n // @@ Add: event handler to redraw the stuff below when me changes.\n const loginOutButton = UI.login.loginStatusBox(dom, webIdUri => {\n me = kb.sym(webIdUri)\n // @@ To be written: redraw as a function the new me\n // @@ refresh the sidebars\n UI.widgets.refreshTree(div) // this refreshes the middle at least\n })\n\n tips.appendChild(loginOutButton)\n\n const thisIsYou = me && kb.sameThings(me, s)\n\n const knows = foaf('knows')\n // var givenName = kb.sym('http://www.w3.org/2000/10/swap/pim/contact#givenName')\n const familiar =\n kb.anyValue(s, foaf('givenname')) ||\n kb.anyValue(s, foaf('firstName')) ||\n kb.anyValue(s, foaf('nick')) ||\n kb.anyValue(s, foaf('name')) ||\n kb.anyValue(s, vcard('fn'))\n const friends = kb.each(s, knows)\n\n // Do I have a public profile document?\n let profile = null // This could be SPARQL { ?me foaf:primaryTopic [ a foaf:PersonalProfileDocument ] }\n let editable = false\n let incoming\n let outgoing\n if (me) {\n // The definition of FAF personal profile document is ..\n const works = kb.each(undefined, foaf('primaryTopic'), me) // having me as primary topic\n let message = ''\n for (let i = 0; i < works.length; i++) {\n if (\n kb.whether(\n works[i],\n UI.ns.rdf('type'),\n foaf('PersonalProfileDocument')\n )\n ) {\n editable = outliner.UserInput.sparqler.editable(works[i].uri, kb)\n if (!editable) {\n message +=\n 'Your profile <' +\n UI.utils.escapeForXML(works[i].uri) +\n '> is not remotely editable.'\n } else {\n profile = works[i]\n break\n }\n }\n }\n\n if (!profile) {\n say(\n message + \"\\nI couldn't find your editable personal profile document.\"\n )\n } else {\n say('Editing your profile ' + profile + '.')\n // Do I have an EDITABLE profile?\n editable = outliner.UserInput.sparqler.editable(profile.uri, kb)\n }\n\n if (thisIsYou) {\n // This is about me\n // pass... @@\n } else {\n // This is about someone else\n // My relationship with this person\n\n h3 = dom.createElement('h3')\n h3.appendChild(dom.createTextNode('You and ' + familiar))\n tools.appendChild(h3)\n\n const cme = kb.canon(me)\n incoming = kb.whether(s, knows, cme)\n outgoing = false\n const outgoingSt = kb.statementsMatching(cme, knows, s)\n if (outgoingSt.length) {\n outgoing = true\n if (!profile) profile = outgoingSt[0].why\n }\n\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n\n const youAndThem = function () {\n tr.appendChild(link(text('You'), meUri))\n tr.appendChild(text(' and '))\n tr.appendChild(link(text(familiar), s.uri))\n }\n\n if (!incoming) {\n if (!outgoing) {\n youAndThem()\n tr.appendChild(text(' have not said you know each other.'))\n } else {\n tr.appendChild(link(text('You'), meUri))\n tr.appendChild(text(' know '))\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text(' (unconfirmed)'))\n }\n } else {\n if (!outgoing) {\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text(' knows '))\n tr.appendChild(link(text('you'), meUri))\n tr.appendChild(text(' (unconfirmed).')) // @@\n tr.appendChild(text(' confirm you know '))\n tr.appendChild(link(text(familiar), s.uri))\n tr.appendChild(text('.'))\n } else {\n youAndThem()\n tr.appendChild(text(' say you know each other.'))\n }\n }\n\n if (editable) {\n const f = buildCheckboxForm(\n 'You know ' + familiar,\n new UI.rdf.Statement(me, knows, s, profile),\n outgoing\n )\n tools.appendChild(f)\n } // editable\n\n // //////////////// Mutual friends\n if (friends) {\n const myFriends = kb.each(me, foaf('knows'))\n if (myFriends.length) {\n const mutualFriends = common(friends, myFriends)\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n tr.appendChild(\n dom.createTextNode(\n 'You' +\n (familiar ? ' and ' + familiar : '') +\n ' know' +\n people(mutualFriends.length) +\n ' found in common'\n )\n )\n if (mutualFriends) {\n for (let i = 0; i < mutualFriends.length; i++) {\n tr.appendChild(\n dom.createTextNode(', ' + UI.utils.label(mutualFriends[i]))\n )\n }\n }\n }\n const tr = dom.createElement('tr')\n tools.appendChild(tr)\n } // friends\n } // About someone else\n } // me is defined\n // End of you and s\n\n // div.appendChild(dom.createTextNode(plural(friends.length, 'acquaintance') +'. '))\n\n // ///////////////////////////////////////////// Main block\n //\n // Should: Find the intersection and difference sets\n\n // List all x such that s knows x.\n UI.widgets.attachmentList(dom, s, mainTable, {\n doc: profile,\n modify: !!editable,\n predicate: foaf('knows'),\n noun: 'friend'\n })\n\n // Figure out which are reciprocated:\n // @@ Does not look up profiles\n // Does distinguish reciprocated from unreciprocated friendships\n //\n function triageFriends (s) {\n outgoing = kb.each(s, foaf('knows'))\n incoming = kb.each(undefined, foaf('knows'), s) // @@ have to load the friends\n const confirmed = []\n const unconfirmed = []\n const requests = []\n\n for (let i = 0; i < outgoing.length; i++) {\n const friend = outgoing[i]\n let found = false\n for (let j = 0; j < incoming.length; j++) {\n if (incoming[j].sameTerm(friend)) {\n found = true\n break\n }\n }\n if (found) confirmed.push(friend)\n else unconfirmed.push(friend)\n } // outgoing\n\n for (let i = 0; i < incoming.length; i++) {\n const friend = incoming[i]\n // var lab = UI.utils.label(friend)\n let found = false\n for (let j = 0; j < outgoing.length; j++) {\n if (outgoing[j].sameTerm(friend)) {\n found = true\n break\n }\n }\n if (!found) requests.push(friend)\n } // incoming\n\n const cases = [\n ['Acquaintances', outgoing],\n ['Mentioned as acquaintances by: ', requests]\n ]\n for (let i = 0; i < cases.length; i++) {\n const thisCase = cases[i]\n const friends = thisCase[1]\n if (friends.length === 0) continue // Skip empty sections (sure?)\n\n const h3 = dom.createElement('h3')\n h3.textContent = thisCase[0]\n const htr = dom.createElement('tr')\n htr.appendChild(h3)\n mainTable.appendChild(htr)\n\n const items = []\n for (let j9 = 0; j9 < friends.length; j9++) {\n items.push([UI.utils.label(friends[j9]), friends[j9]])\n }\n items.sort()\n let last = null\n let fr\n for (let j7 = 0; j7 < items.length; j7++) {\n fr = items[j7][1]\n if (fr.sameTerm(last)) continue // unique\n last = fr\n if (UI.utils.label(fr) !== '...') {\n // This check is to avoid bnodes with no labels attached\n // appearing in the friends list with \"...\" - Oshani\n mainTable.appendChild(oneFriend(fr))\n }\n }\n }\n }\n if ($rdf.keepThisCodeForLaterButDisableFerossConstantConditionPolice) {\n triageFriends(s)\n }\n // //////////////////////////////////// Basic info on left\n\n h3 = dom.createElement('h3')\n h3.appendChild(dom.createTextNode('Basic Information'))\n tools.appendChild(h3)\n\n // For each home page like thing make a label which will\n // make sense and add the domain (like \"w3.org blog\") if there are more than one of the same type\n //\n const preds = [\n UI.ns.foaf('homepage'),\n UI.ns.foaf('weblog'),\n UI.ns.foaf('workplaceHomepage'),\n UI.ns.foaf('schoolHomepage')\n ]\n for (let i6 = 0; i6 < preds.length; i6++) {\n const pred = preds[i6]\n const sts = kb.statementsMatching(s, pred)\n if (sts.length === 0) {\n // if (editable) say(\"No home page set. Use the blue + icon at the bottom of the main view to add information.\")\n } else {\n const uris = []\n for (let j5 = 0; j5 < sts.length; j5++) {\n const st = sts[j5]\n if (st.object.uri) uris.push(st.object.uri) // Ignore if not symbol\n }\n uris.sort()\n let last2 = ''\n let lab2\n for (let k = 0; k < uris.length; k++) {\n const uri = uris[k]\n if (uri === last2) continue // uniques only\n last2 = uri\n let hostlabel = ''\n lab2 = UI.utils.label(pred)\n if (uris.length > 1) {\n const l = uri.indexOf('//')\n if (l > 0) {\n let r = uri.indexOf('/', l + 2)\n const r2 = uri.lastIndexOf('.', r)\n if (r2 > 0) r = r2\n hostlabel = uri.slice(l + 2, r)\n }\n }\n if (hostlabel) lab2 = hostlabel + ' ' + lab2 // disambiguate\n const t = dom.createTextNode(lab2)\n const a = dom.createElement('a')\n a.appendChild(t)\n a.setAttribute('href', uri)\n const d = dom.createElement('div')\n // d.className = 'social_linkButton'\n d.style.cssText =\n 'width: 80%; background-color: #fff; border: solid 0.05em #ccc; margin-top: 0.1em; margin-bottom: 0.1em; padding: 0.1em; text-align: center;'\n d.appendChild(a)\n tools.appendChild(d)\n }\n }\n }\n\n const preds2 = [UI.ns.foaf('openid'), UI.ns.foaf('nick')]\n for (let i2 = 0; i2 < preds2.length; i2++) {\n const pred = preds2[i2]\n const sts2 = kb.statementsMatching(s, pred)\n if (sts2.length === 0) {\n // if (editable) say(\"No home page set. Use the blue + icon at the bottom of the main view to add information.\")\n } else {\n outliner.appendPropertyTRs(tools, sts2, false, function (_pred) {\n return true\n })\n }\n }\n\n return div\n } // render()\n} //\n// ends\n"],"mappings":"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"}