solid-panes 3.5.23-4529a705 → 3.5.23-7a50b909
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dev/loader.ts +1 -1
- package/lib/dashboard/basicPreferences.js +2 -2
- package/lib/dashboard/basicPreferences.js.map +1 -1
- package/lib/mainPage/header.js +2 -2
- package/lib/mainPage/header.js.map +1 -1
- package/lib/outline/manager.test.js +3 -3
- package/lib/outline/manager.test.js.map +1 -1
- package/lib/profile/editProfile.view.js +1 -1
- package/lib/profile/editProfile.view.js.map +1 -1
- package/lib/registerPanes.js +1 -1
- package/lib/registerPanes.js.map +1 -1
- package/lib/schedule/schedulePane.js +1 -1
- package/lib/schedule/schedulePane.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +5 -5
- package/src/dashboard/basicPreferences.ts +2 -2
- package/src/mainPage/header.ts +2 -2
- package/src/outline/manager.test.ts +3 -3
- package/src/profile/editProfile.view.ts +1 -1
- package/src/registerPanes.js +1 -1
- package/src/schedule/schedulePane.js +1 -1
- package/src/versionInfo.ts +2 -2
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Currently the panes available include:
|
|
|
33
33
|
The solid-app-set panes are built using a set of widgets and utilities in
|
|
34
34
|
[https://github.com/linkeddata/solid-ui](https://github.com/linkeddata/solid-ui)
|
|
35
35
|
|
|
36
|
-
To help onboarding, we're using [roles](https://github.com/
|
|
36
|
+
To help onboarding, we're using [roles](https://github.com/solidos/userguide/#role) to limit the number of panes presented
|
|
37
37
|
to new users.
|
|
38
38
|
|
|
39
39
|
## Goals
|
|
@@ -49,7 +49,7 @@ to new users.
|
|
|
49
49
|
Volunteers are always welcome!
|
|
50
50
|
|
|
51
51
|
## Documentation
|
|
52
|
-
- [Visual Language](https://
|
|
52
|
+
- [Visual Language](https://solidos.github.io/solid-panes/Documentation/VisualLanguage.html)
|
|
53
53
|
- [Conventions](./Documentation/conventions.md)
|
|
54
54
|
|
|
55
55
|
## Development
|
|
@@ -57,7 +57,7 @@ To get started, make sure you have Node.js installed (for instance
|
|
|
57
57
|
through https://github.com/nvm-sh/nvm), and:
|
|
58
58
|
1. run
|
|
59
59
|
```sh
|
|
60
|
-
git clone https://github.com/
|
|
60
|
+
git clone https://github.com/solidos/solid-panes
|
|
61
61
|
cd solid-panes
|
|
62
62
|
npm install
|
|
63
63
|
npm run build-version
|
|
@@ -80,4 +80,4 @@ Here, just to show how it works, are how some RDF Classes map onto panes. Anythi
|
|
|
80
80
|
contacts (A VCARD Address Book, Group, Individual, Organization) can be handled by the one contact
|
|
81
81
|
pane. Any other pane which wants to deal with contacts can just use the pane within its own user interface.
|
|
82
82
|
|
|
83
|
-

|
package/dev/loader.ts
CHANGED
|
@@ -19,7 +19,7 @@ async function renderPane (uri: string) {
|
|
|
19
19
|
store.fetcher.load(doc).then(resolve, reject)
|
|
20
20
|
})
|
|
21
21
|
const context = {
|
|
22
|
-
// see https://github.com/
|
|
22
|
+
// see https://github.com/solidos/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34
|
|
23
23
|
dom: document,
|
|
24
24
|
getOutliner,
|
|
25
25
|
session: {
|
|
@@ -115,7 +115,7 @@ function setupUserTypesSection(container, dom) {
|
|
|
115
115
|
var description = formContainer.appendChild(dom.createElement('p'));
|
|
116
116
|
description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.';
|
|
117
117
|
var userTypesLink = formContainer.appendChild(dom.createElement('a'));
|
|
118
|
-
userTypesLink.href = 'https://github.com/
|
|
118
|
+
userTypesLink.href = 'https://github.com/solidos/userguide/#role';
|
|
119
119
|
userTypesLink.innerText = 'Read more';
|
|
120
120
|
var formArea = formContainer.appendChild(dom.createElement('div'));
|
|
121
121
|
return formArea;
|
|
@@ -172,7 +172,7 @@ function generateDeletionLink(_x2, _x3) {
|
|
|
172
172
|
*
|
|
173
173
|
* This function infers the deletion link by assuming the URL structure of Node Solid server.
|
|
174
174
|
* In the future, Solid will hopefully provide a standardised way of discovering the deletion link:
|
|
175
|
-
* https://github.com/
|
|
175
|
+
* https://github.com/solidos/data-interoperability-panel/issues/18
|
|
176
176
|
*
|
|
177
177
|
* If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for
|
|
178
178
|
* vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/dashboard/basicPreferences.ts"],"names":["basicPreferencesPane","icon","icons","iconBase","name","label","_subject","render","subject","context","dom","store","session","complainIfBad","ok","mess","container","appendChild","widgets","errorMessageBlock","createElement","formArea","setupUserTypesSection","loadData","doc","turtle","holds","undefined","parse","uri","preferencesForm","sym","preferencesFormText","ontologyExtra","ontologyData","doRender","login","ensureLoadedPreferences","div","renderContext","preferencesFile","console","log","preferencesFileError","appendedForm","appendForm","me","style","borderStyle","trustedApplicationsView","paneRegistry","byName","addDeleteSection","formContainer","createSection","description","innerText","userTypesLink","href","profile","section","podServerNodes","each","ns","space","podServers","map","node","value","list","forEach","server","generateDeletionLink","deletionLink","listItem","podServer","link","textContent","getDeletionUrlForServer","deletionUrl","singleUserUrl","URL","multiUserUrl","pathname","hostnameParts","hostname","split","slice","join","fetch","method","multiUserNssResponse","singleUserNssResponse","title","border","borderRadius","padding","marginTop","titleElement"],"mappings":"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","sourcesContent":["import { PaneDefinition } from 'pane-registry'\nimport { IndexedFormula, NamedNode, parse, Store } from 'rdflib'\nimport { icons, login, ns, widgets } from 'solid-ui'\nimport ontologyData from './ontologyData.ttl'\nimport preferencesFormText from './preferencesFormText.ttl'\n\nexport const basicPreferencesPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_Sliders_341315_000000.svg',\n name: 'basicPreferences',\n label: _subject => {\n return null\n },\n\n // Render the pane\n // The subject should be the logged in user.\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store as Store\n\n function complainIfBad (ok: Boolean, mess: any) {\n if (ok) return\n container.appendChild(widgets.errorMessageBlock(dom, mess, '#fee'))\n }\n\n const container = dom.createElement('div')\n\n const formArea = setupUserTypesSection(container, dom)\n\n function loadData (doc: NamedNode, turtle: String) {\n doc = doc.doc() // remove # from URI if nec\n if (!store.holds(undefined, undefined, undefined, doc)) {\n // If not loaded already\n ;(parse as any)(turtle, store, doc.uri, 'text/turtle', null) // Load form directly\n }\n }\n\n const preferencesForm = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597#this'\n )\n loadData(preferencesForm, preferencesFormText)\n\n const ontologyExtra = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597-ONT'\n )\n loadData(ontologyExtra, ontologyData)\n\n async function doRender () {\n const renderContext = await login.ensureLoadedPreferences({\n dom,\n div: container\n })\n if (!renderContext.preferencesFile) {\n // Could be CORS\n console.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n renderContext.preferencesFileError\n )\n return\n }\n const appendedForm = widgets.appendForm(\n dom,\n formArea,\n {},\n renderContext.me,\n preferencesForm,\n renderContext.preferencesFile,\n complainIfBad\n )\n appendedForm.style.borderStyle = 'none'\n\n const trustedApplicationsView = context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplicationsView) {\n container.appendChild(trustedApplicationsView.render(null, context))\n }\n\n // @@ TODO Remove need for casting as any and bang (!) syntax\n addDeleteSection(container, store, renderContext.me!, dom)\n }\n\n doRender()\n\n return container\n }\n}\n\nfunction setupUserTypesSection (\n container: Element,\n dom: HTMLDocument\n): Element {\n const formContainer = createSection(container, dom, 'User types')\n\n const description = formContainer.appendChild(dom.createElement('p'))\n description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.'\n\n const userTypesLink = formContainer.appendChild(dom.createElement('a'))\n userTypesLink.href = 'https://github.com/solid/userguide/#role'\n userTypesLink.innerText = 'Read more'\n\n const formArea = formContainer.appendChild(dom.createElement('div'))\n\n return formArea\n}\n\nexport default basicPreferencesPane\n\n// ends\n\nfunction addDeleteSection (\n container: HTMLElement,\n store: IndexedFormula,\n profile: NamedNode,\n dom: HTMLDocument\n): void {\n const section = createSection(container, dom, 'Delete account')\n\n const podServerNodes = store.each(profile, ns.space('storage'), null, profile.doc())\n const podServers = podServerNodes.map(node => node.value)\n\n const list = section.appendChild(dom.createElement('ul'))\n\n podServers.forEach(async server => {\n const deletionLink = await generateDeletionLink(server, dom)\n if (deletionLink) {\n const listItem = list.appendChild(dom.createElement('li'))\n listItem.appendChild(deletionLink)\n }\n })\n}\n\nasync function generateDeletionLink (\n podServer: string,\n dom: HTMLDocument\n): Promise<HTMLElement | null> {\n const link = dom.createElement('a')\n link.textContent = `Delete your account at ${podServer}`\n const deletionUrl = await getDeletionUrlForServer(podServer)\n if (typeof deletionUrl !== 'string') {\n return null\n }\n link.href = deletionUrl\n return link\n}\n\n/**\n * Hacky way to get the deletion link to a Pod\n *\n * This function infers the deletion link by assuming the URL structure of Node Solid server.\n * In the future, Solid will hopefully provide a standardised way of discovering the deletion link:\n * https://github.com/solid/data-interoperability-panel/issues/18\n *\n * If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for\n * vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the\n * deletion URL would be at vincent.dev.inrupt.net/account/delete.\n *\n * @param server Pod server containing the user's account.\n * @returns URL of the page that Node Solid Server would offer to delete the account, or null if\n * the URLs we tried give invalid responses.\n */\nasync function getDeletionUrlForServer (\n server: string\n): Promise<string | null> {\n const singleUserUrl = new URL(server)\n const multiUserUrl = new URL(server)\n multiUserUrl.pathname = singleUserUrl.pathname = '/account/delete'\n\n const hostnameParts = multiUserUrl.hostname.split('.')\n // Remove `vincent.` from `vincent.dev.inrupt.net`, for example:\n multiUserUrl.hostname = hostnameParts.slice(1).join('.')\n\n const multiUserNssResponse = await fetch(multiUserUrl.href, {\n method: 'HEAD'\n })\n if (multiUserNssResponse.ok) {\n return multiUserUrl.href\n }\n\n const singleUserNssResponse = await fetch(singleUserUrl.href, {\n method: 'HEAD'\n })\n if (singleUserNssResponse.ok) {\n return singleUserUrl.href\n }\n return null\n}\n\nfunction createSection (\n container: Element,\n dom: HTMLDocument,\n title: string\n): Element {\n const section = container.appendChild(dom.createElement('div'))\n section.style.border = '0.3em solid #418d99'\n section.style.borderRadius = '0.5em'\n section.style.padding = '0.7em'\n section.style.marginTop = '0.7em'\n\n const titleElement = section.appendChild(dom.createElement('h3'))\n titleElement.innerText = title\n\n return section\n}\n"],"file":"basicPreferences.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/dashboard/basicPreferences.ts"],"names":["basicPreferencesPane","icon","icons","iconBase","name","label","_subject","render","subject","context","dom","store","session","complainIfBad","ok","mess","container","appendChild","widgets","errorMessageBlock","createElement","formArea","setupUserTypesSection","loadData","doc","turtle","holds","undefined","parse","uri","preferencesForm","sym","preferencesFormText","ontologyExtra","ontologyData","doRender","login","ensureLoadedPreferences","div","renderContext","preferencesFile","console","log","preferencesFileError","appendedForm","appendForm","me","style","borderStyle","trustedApplicationsView","paneRegistry","byName","addDeleteSection","formContainer","createSection","description","innerText","userTypesLink","href","profile","section","podServerNodes","each","ns","space","podServers","map","node","value","list","forEach","server","generateDeletionLink","deletionLink","listItem","podServer","link","textContent","getDeletionUrlForServer","deletionUrl","singleUserUrl","URL","multiUserUrl","pathname","hostnameParts","hostname","split","slice","join","fetch","method","multiUserNssResponse","singleUserNssResponse","title","border","borderRadius","padding","marginTop","titleElement"],"mappings":";;;;;;;AACA;;AACA;;;;;;;;;;;AAIO,IAAMA,oBAAoC,GAAG;AAClDC,EAAAA,IAAI,EAAEC,eAAMC,QAAN,GAAiB,gCAD2B;AAElDC,EAAAA,IAAI,EAAE,kBAF4C;AAGlDC,EAAAA,KAAK,EAAE,eAAAC,QAAQ,EAAI;AACjB,WAAO,IAAP;AACD,GALiD;AAOlD;AACA;AACAC,EAAAA,MAAM,EAAE,gBAACC,OAAD,EAAUC,OAAV,EAAsB;AAC5B,QAAMC,GAAG,GAAGD,OAAO,CAACC,GAApB;AACA,QAAMC,KAAK,GAAGF,OAAO,CAACG,OAAR,CAAgBD,KAA9B;;AAEA,aAASE,aAAT,CAAwBC,EAAxB,EAAqCC,IAArC,EAAgD;AAC9C,UAAID,EAAJ,EAAQ;AACRE,MAAAA,SAAS,CAACC,WAAV,CAAsBC,iBAAQC,iBAAR,CAA0BT,GAA1B,EAA+BK,IAA/B,EAAqC,MAArC,CAAtB;AACD;;AAED,QAAMC,SAAS,GAAGN,GAAG,CAACU,aAAJ,CAAkB,KAAlB,CAAlB;AAEA,QAAMC,QAAQ,GAAGC,qBAAqB,CAACN,SAAD,EAAYN,GAAZ,CAAtC;;AAEA,aAASa,QAAT,CAAmBC,GAAnB,EAAmCC,MAAnC,EAAmD;AACjDD,MAAAA,GAAG,GAAGA,GAAG,CAACA,GAAJ,EAAN,CADiD,CACjC;;AAChB,UAAI,CAACb,KAAK,CAACe,KAAN,CAAYC,SAAZ,EAAuBA,SAAvB,EAAkCA,SAAlC,EAA6CH,GAA7C,CAAL,EAAwD;AACtD;AACA;AAAC,YAACI,aAAD,EAAeH,MAAf,EAAuBd,KAAvB,EAA8Ba,GAAG,CAACK,GAAlC,EAAuC,aAAvC,EAAsD,IAAtD,EAFqD,CAEO;AAC9D;AACF;;AAED,QAAMC,eAAe,GAAGnB,KAAK,CAACoB,GAAN,CACtB,oDADsB,CAAxB;AAGAR,IAAAA,QAAQ,CAACO,eAAD,EAAkBE,mBAAlB,CAAR;AAEA,QAAMC,aAAa,GAAGtB,KAAK,CAACoB,GAAN,CACpB,mDADoB,CAAtB;AAGAR,IAAAA,QAAQ,CAACU,aAAD,EAAgBC,YAAhB,CAAR;;AA7B4B,aA+BbC,QA/Ba;AAAA;AAAA;;AAAA;AAAA,0EA+B5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAC8BC,eAAMC,uBAAN,CAA8B;AACxD3B,kBAAAA,GAAG,EAAHA,GADwD;AAExD4B,kBAAAA,GAAG,EAAEtB;AAFmD,iBAA9B,CAD9B;;AAAA;AACQuB,gBAAAA,aADR;;AAAA,oBAKOA,aAAa,CAACC,eALrB;AAAA;AAAA;AAAA;;AAMI;AACAC,gBAAAA,OAAO,CAACC,GAAR,CACE,2EACAH,aAAa,CAACI,oBAFhB;AAPJ;;AAAA;AAaQC,gBAAAA,YAbR,GAauB1B,iBAAQ2B,UAAR,CACnBnC,GADmB,EAEnBW,QAFmB,EAGnB,EAHmB,EAInBkB,aAAa,CAACO,EAJK,EAKnBhB,eALmB,EAMnBS,aAAa,CAACC,eANK,EAOnB3B,aAPmB,CAbvB;AAsBE+B,gBAAAA,YAAY,CAACG,KAAb,CAAmBC,WAAnB,GAAiC,MAAjC;AAEMC,gBAAAA,uBAxBR,GAwBkCxC,OAAO,CAACG,OAAR,CAAgBsC,YAAhB,CAA6BC,MAA7B,CAAoC,qBAApC,CAxBlC;;AAyBE,oBAAIF,uBAAJ,EAA6B;AAC3BjC,kBAAAA,SAAS,CAACC,WAAV,CAAsBgC,uBAAuB,CAAC1C,MAAxB,CAA+B,IAA/B,EAAqCE,OAArC,CAAtB;AACD,iBA3BH,CA6BE;;;AACA2C,gBAAAA,gBAAgB,CAACpC,SAAD,EAAYL,KAAZ,EAAmB4B,aAAa,CAACO,EAAjC,EAAsCpC,GAAtC,CAAhB;;AA9BF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA/B4B;AAAA;AAAA;;AAgE5ByB,IAAAA,QAAQ;AAER,WAAOnB,SAAP;AACD;AA5EiD,CAA7C;;;AA+EP,SAASM,qBAAT,CACEN,SADF,EAEEN,GAFF,EAGW;AACT,MAAM2C,aAAa,GAAGC,aAAa,CAACtC,SAAD,EAAYN,GAAZ,EAAiB,YAAjB,CAAnC;AAEA,MAAM6C,WAAW,GAAGF,aAAa,CAACpC,WAAd,CAA0BP,GAAG,CAACU,aAAJ,CAAkB,GAAlB,CAA1B,CAApB;AACAmC,EAAAA,WAAW,CAACC,SAAZ,GAAwB,yGAAxB;AAEA,MAAMC,aAAa,GAAGJ,aAAa,CAACpC,WAAd,CAA0BP,GAAG,CAACU,aAAJ,CAAkB,GAAlB,CAA1B,CAAtB;AACAqC,EAAAA,aAAa,CAACC,IAAd,GAAqB,4CAArB;AACAD,EAAAA,aAAa,CAACD,SAAd,GAA0B,WAA1B;AAEA,MAAMnC,QAAQ,GAAGgC,aAAa,CAACpC,WAAd,CAA0BP,GAAG,CAACU,aAAJ,CAAkB,KAAlB,CAA1B,CAAjB;AAEA,SAAOC,QAAP;AACD;;eAEcrB,oB,EAEf;;;;AAEA,SAASoD,gBAAT,CACEpC,SADF,EAEEL,KAFF,EAGEgD,OAHF,EAIEjD,GAJF,EAKQ;AACN,MAAMkD,OAAO,GAAGN,aAAa,CAACtC,SAAD,EAAYN,GAAZ,EAAiB,gBAAjB,CAA7B;AAEA,MAAMmD,cAAc,GAAGlD,KAAK,CAACmD,IAAN,CAAWH,OAAX,EAAoBI,YAAGC,KAAH,CAAS,SAAT,CAApB,EAAyC,IAAzC,EAA+CL,OAAO,CAACnC,GAAR,EAA/C,CAAvB;AACA,MAAMyC,UAAU,GAAGJ,cAAc,CAACK,GAAf,CAAmB,UAAAC,IAAI;AAAA,WAAIA,IAAI,CAACC,KAAT;AAAA,GAAvB,CAAnB;AAEA,MAAMC,IAAI,GAAGT,OAAO,CAAC3C,WAAR,CAAoBP,GAAG,CAACU,aAAJ,CAAkB,IAAlB,CAApB,CAAb;AAEA6C,EAAAA,UAAU,CAACK,OAAX;AAAA,uEAAmB,kBAAMC,MAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACUC,oBAAoB,CAACD,MAAD,EAAS7D,GAAT,CAD9B;;AAAA;AACX+D,cAAAA,YADW;;AAEjB,kBAAIA,YAAJ,EAAkB;AACVC,gBAAAA,QADU,GACCL,IAAI,CAACpD,WAAL,CAAiBP,GAAG,CAACU,aAAJ,CAAkB,IAAlB,CAAjB,CADD;AAEhBsD,gBAAAA,QAAQ,CAACzD,WAAT,CAAqBwD,YAArB;AACD;;AALgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAnB;;AAAA;AAAA;AAAA;AAAA;AAOD;;SAEcD,oB;;;AAcf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;kFA5BA,kBACEG,SADF,EAEEjE,GAFF;AAAA;AAAA;AAAA;AAAA;AAAA;AAIQkE,YAAAA,IAJR,GAIelE,GAAG,CAACU,aAAJ,CAAkB,GAAlB,CAJf;AAKEwD,YAAAA,IAAI,CAACC,WAAL,oCAA6CF,SAA7C;AALF;AAAA,mBAM4BG,uBAAuB,CAACH,SAAD,CANnD;;AAAA;AAMQI,YAAAA,WANR;;AAAA,kBAOM,OAAOA,WAAP,KAAuB,QAP7B;AAAA;AAAA;AAAA;;AAAA,8CAQW,IARX;;AAAA;AAUEH,YAAAA,IAAI,CAAClB,IAAL,GAAYqB,WAAZ;AAVF,8CAWSH,IAXT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA6BeE,uB;;;;;qFAAf,kBACEP,MADF;AAAA;AAAA;AAAA;AAAA;AAAA;AAGQS,YAAAA,aAHR,GAGwB,IAAIC,GAAJ,CAAQV,MAAR,CAHxB;AAIQW,YAAAA,YAJR,GAIuB,IAAID,GAAJ,CAAQV,MAAR,CAJvB;AAKEW,YAAAA,YAAY,CAACC,QAAb,GAAwBH,aAAa,CAACG,QAAd,GAAyB,iBAAjD;AAEMC,YAAAA,aAPR,GAOwBF,YAAY,CAACG,QAAb,CAAsBC,KAAtB,CAA4B,GAA5B,CAPxB,EAQE;;AACAJ,YAAAA,YAAY,CAACG,QAAb,GAAwBD,aAAa,CAACG,KAAd,CAAoB,CAApB,EAAuBC,IAAvB,CAA4B,GAA5B,CAAxB;AATF;AAAA,mBAWqCC,KAAK,CAACP,YAAY,CAACxB,IAAd,EAAoB;AAC1DgC,cAAAA,MAAM,EAAE;AADkD,aAApB,CAX1C;;AAAA;AAWQC,YAAAA,oBAXR;;AAAA,iBAcMA,oBAAoB,CAAC7E,EAd3B;AAAA;AAAA;AAAA;;AAAA,8CAeWoE,YAAY,CAACxB,IAfxB;;AAAA;AAAA;AAAA,mBAkBsC+B,KAAK,CAACT,aAAa,CAACtB,IAAf,EAAqB;AAC5DgC,cAAAA,MAAM,EAAE;AADoD,aAArB,CAlB3C;;AAAA;AAkBQE,YAAAA,qBAlBR;;AAAA,iBAqBMA,qBAAqB,CAAC9E,EArB5B;AAAA;AAAA;AAAA;;AAAA,8CAsBWkE,aAAa,CAACtB,IAtBzB;;AAAA;AAAA,8CAwBS,IAxBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AA2BA,SAASJ,aAAT,CACEtC,SADF,EAEEN,GAFF,EAGEmF,KAHF,EAIW;AACT,MAAMjC,OAAO,GAAG5C,SAAS,CAACC,WAAV,CAAsBP,GAAG,CAACU,aAAJ,CAAkB,KAAlB,CAAtB,CAAhB;AACAwC,EAAAA,OAAO,CAACb,KAAR,CAAc+C,MAAd,GAAuB,qBAAvB;AACAlC,EAAAA,OAAO,CAACb,KAAR,CAAcgD,YAAd,GAA6B,OAA7B;AACAnC,EAAAA,OAAO,CAACb,KAAR,CAAciD,OAAd,GAAwB,OAAxB;AACApC,EAAAA,OAAO,CAACb,KAAR,CAAckD,SAAd,GAA0B,OAA1B;AAEA,MAAMC,YAAY,GAAGtC,OAAO,CAAC3C,WAAR,CAAoBP,GAAG,CAACU,aAAJ,CAAkB,IAAlB,CAApB,CAArB;AACA8E,EAAAA,YAAY,CAAC1C,SAAb,GAAyBqC,KAAzB;AAEA,SAAOjC,OAAP;AACD","sourcesContent":["import { PaneDefinition } from 'pane-registry'\nimport { IndexedFormula, NamedNode, parse, Store } from 'rdflib'\nimport { icons, login, ns, widgets } from 'solid-ui'\nimport ontologyData from './ontologyData.ttl'\nimport preferencesFormText from './preferencesFormText.ttl'\n\nexport const basicPreferencesPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_Sliders_341315_000000.svg',\n name: 'basicPreferences',\n label: _subject => {\n return null\n },\n\n // Render the pane\n // The subject should be the logged in user.\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store as Store\n\n function complainIfBad (ok: Boolean, mess: any) {\n if (ok) return\n container.appendChild(widgets.errorMessageBlock(dom, mess, '#fee'))\n }\n\n const container = dom.createElement('div')\n\n const formArea = setupUserTypesSection(container, dom)\n\n function loadData (doc: NamedNode, turtle: String) {\n doc = doc.doc() // remove # from URI if nec\n if (!store.holds(undefined, undefined, undefined, doc)) {\n // If not loaded already\n ;(parse as any)(turtle, store, doc.uri, 'text/turtle', null) // Load form directly\n }\n }\n\n const preferencesForm = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597#this'\n )\n loadData(preferencesForm, preferencesFormText)\n\n const ontologyExtra = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597-ONT'\n )\n loadData(ontologyExtra, ontologyData)\n\n async function doRender () {\n const renderContext = await login.ensureLoadedPreferences({\n dom,\n div: container\n })\n if (!renderContext.preferencesFile) {\n // Could be CORS\n console.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n renderContext.preferencesFileError\n )\n return\n }\n const appendedForm = widgets.appendForm(\n dom,\n formArea,\n {},\n renderContext.me,\n preferencesForm,\n renderContext.preferencesFile,\n complainIfBad\n )\n appendedForm.style.borderStyle = 'none'\n\n const trustedApplicationsView = context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplicationsView) {\n container.appendChild(trustedApplicationsView.render(null, context))\n }\n\n // @@ TODO Remove need for casting as any and bang (!) syntax\n addDeleteSection(container, store, renderContext.me!, dom)\n }\n\n doRender()\n\n return container\n }\n}\n\nfunction setupUserTypesSection (\n container: Element,\n dom: HTMLDocument\n): Element {\n const formContainer = createSection(container, dom, 'User types')\n\n const description = formContainer.appendChild(dom.createElement('p'))\n description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.'\n\n const userTypesLink = formContainer.appendChild(dom.createElement('a'))\n userTypesLink.href = 'https://github.com/solidos/userguide/#role'\n userTypesLink.innerText = 'Read more'\n\n const formArea = formContainer.appendChild(dom.createElement('div'))\n\n return formArea\n}\n\nexport default basicPreferencesPane\n\n// ends\n\nfunction addDeleteSection (\n container: HTMLElement,\n store: IndexedFormula,\n profile: NamedNode,\n dom: HTMLDocument\n): void {\n const section = createSection(container, dom, 'Delete account')\n\n const podServerNodes = store.each(profile, ns.space('storage'), null, profile.doc())\n const podServers = podServerNodes.map(node => node.value)\n\n const list = section.appendChild(dom.createElement('ul'))\n\n podServers.forEach(async server => {\n const deletionLink = await generateDeletionLink(server, dom)\n if (deletionLink) {\n const listItem = list.appendChild(dom.createElement('li'))\n listItem.appendChild(deletionLink)\n }\n })\n}\n\nasync function generateDeletionLink (\n podServer: string,\n dom: HTMLDocument\n): Promise<HTMLElement | null> {\n const link = dom.createElement('a')\n link.textContent = `Delete your account at ${podServer}`\n const deletionUrl = await getDeletionUrlForServer(podServer)\n if (typeof deletionUrl !== 'string') {\n return null\n }\n link.href = deletionUrl\n return link\n}\n\n/**\n * Hacky way to get the deletion link to a Pod\n *\n * This function infers the deletion link by assuming the URL structure of Node Solid server.\n * In the future, Solid will hopefully provide a standardised way of discovering the deletion link:\n * https://github.com/solidos/data-interoperability-panel/issues/18\n *\n * If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for\n * vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the\n * deletion URL would be at vincent.dev.inrupt.net/account/delete.\n *\n * @param server Pod server containing the user's account.\n * @returns URL of the page that Node Solid Server would offer to delete the account, or null if\n * the URLs we tried give invalid responses.\n */\nasync function getDeletionUrlForServer (\n server: string\n): Promise<string | null> {\n const singleUserUrl = new URL(server)\n const multiUserUrl = new URL(server)\n multiUserUrl.pathname = singleUserUrl.pathname = '/account/delete'\n\n const hostnameParts = multiUserUrl.hostname.split('.')\n // Remove `vincent.` from `vincent.dev.inrupt.net`, for example:\n multiUserUrl.hostname = hostnameParts.slice(1).join('.')\n\n const multiUserNssResponse = await fetch(multiUserUrl.href, {\n method: 'HEAD'\n })\n if (multiUserNssResponse.ok) {\n return multiUserUrl.href\n }\n\n const singleUserNssResponse = await fetch(singleUserUrl.href, {\n method: 'HEAD'\n })\n if (singleUserNssResponse.ok) {\n return singleUserUrl.href\n }\n return null\n}\n\nfunction createSection (\n container: Element,\n dom: HTMLDocument,\n title: string\n): Element {\n const section = container.appendChild(dom.createElement('div'))\n section.style.border = '0.3em solid #418d99'\n section.style.borderRadius = '0.5em'\n section.style.padding = '0.7em'\n section.style.marginTop = '0.7em'\n\n const titleElement = section.appendChild(dom.createElement('h3'))\n titleElement.innerText = title\n\n return section\n}\n"],"file":"basicPreferences.js"}
|
package/lib/mainPage/header.js
CHANGED
|
@@ -30,8 +30,8 @@ var LOG_OUT_MENU_ITEM = 'Log out';
|
|
|
30
30
|
* URLS
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
var USER_GUIDE_MENU_URL = 'https://
|
|
34
|
-
var REPORT_A_PROBLEM_MENU_URL = 'https://github.com/
|
|
33
|
+
var USER_GUIDE_MENU_URL = 'https://solidos.github.io/userguide/';
|
|
34
|
+
var REPORT_A_PROBLEM_MENU_URL = 'https://github.com/solidos/solidos/issues';
|
|
35
35
|
|
|
36
36
|
function createHeader(_x, _x2) {
|
|
37
37
|
return _createHeader.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mainPage/header.ts"],"names":["HELP_MENU_ICON","icons","iconBase","SOLID_ICON_URL","USER_GUIDE_MENU_ITEM","REPORT_A_PROBLEM_MENU_ITEM","SHOW_YOUR_PROFILE_MENU_ITEM","LOG_OUT_MENU_ITEM","USER_GUIDE_MENU_URL","REPORT_A_PROBLEM_MENU_URL","createHeader","store","outliner","initHeader","setUserMenu","setHeaderOptions","helpMenuList","label","url","target","headerOptions","logo","helpIcon","showProfile","onclick","openUserProfile","logOut","authSession","logout","userMenuList","getMenuItems","concat","push","GotoSubject","authn","currentUser","undefined","location","reload","getDashboardItems","items","map","element","openDashboardPane","tabName","paneName","pane","showDashboard"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AACA;AACA;AACA;AACA,IAAMA,cAAc,GAAGC,eAAMC,QAAN,GAAiB,eAAxC;AACA,IAAMC,cAAc,GAAG,sDAAvB;AAEA;AACA;AACA;;AACA,IAAMC,oBAAoB,GAAG,YAA7B;AACA,IAAMC,0BAA0B,GAAG,kBAAnC;AACA,IAAMC,2BAA2B,GAAG,mBAApC;AACA,IAAMC,iBAAiB,GAAG,SAA1B;AACA;AACA;AACA;;AACA,IAAMC,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/mainPage/header.ts"],"names":["HELP_MENU_ICON","icons","iconBase","SOLID_ICON_URL","USER_GUIDE_MENU_ITEM","REPORT_A_PROBLEM_MENU_ITEM","SHOW_YOUR_PROFILE_MENU_ITEM","LOG_OUT_MENU_ITEM","USER_GUIDE_MENU_URL","REPORT_A_PROBLEM_MENU_URL","createHeader","store","outliner","initHeader","setUserMenu","setHeaderOptions","helpMenuList","label","url","target","headerOptions","logo","helpIcon","showProfile","onclick","openUserProfile","logOut","authSession","logout","userMenuList","getMenuItems","concat","push","GotoSubject","authn","currentUser","undefined","location","reload","getDashboardItems","items","map","element","openDashboardPane","tabName","paneName","pane","showDashboard"],"mappings":"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","sourcesContent":["import { authSession, authn } from 'solid-logic'\nimport { icons, initHeader } from 'solid-ui'\n/**\n * menu icons\n*/\nconst HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\n/**\n * menu elements\n*/\nconst USER_GUIDE_MENU_ITEM = 'User guide'\nconst REPORT_A_PROBLEM_MENU_ITEM = 'Report a problem'\nconst SHOW_YOUR_PROFILE_MENU_ITEM = 'Show your profile'\nconst LOG_OUT_MENU_ITEM = 'Log out'\n/**\n * URLS\n */\nconst USER_GUIDE_MENU_URL = 'https://solidos.github.io/userguide/'\nconst REPORT_A_PROBLEM_MENU_URL = 'https://github.com/solidos/solidos/issues'\n\nexport async function createHeader (store, outliner) {\n initHeader(store, await setUserMenu(outliner), setHeaderOptions())\n}\n\nfunction setHeaderOptions () {\n const helpMenuList = [\n { label: USER_GUIDE_MENU_ITEM, url: USER_GUIDE_MENU_URL, target: '_blank' },\n { label: REPORT_A_PROBLEM_MENU_ITEM, url: REPORT_A_PROBLEM_MENU_URL, target: '_blank' }\n ]\n const headerOptions = { logo: SOLID_ICON_URL, helpIcon: HELP_MENU_ICON, helpMenuList: helpMenuList }\n\n return headerOptions\n}\n\nasync function setUserMenu (outliner: any) {\n const showProfile = {\n label: SHOW_YOUR_PROFILE_MENU_ITEM,\n onclick: () => openUserProfile(outliner)\n }\n\n const logOut = {\n label: LOG_OUT_MENU_ITEM,\n onclick: () => {\n authSession.logout()\n }\n }\n\n // the order of the menu is important here, show profile first and logout last\n let userMenuList = [showProfile]\n userMenuList = userMenuList.concat(await getMenuItems(outliner))\n userMenuList.push(logOut)\n\n return userMenuList\n}\n\nfunction openUserProfile (outliner: any) {\n outliner.GotoSubject(authn.currentUser(), true, undefined, true, undefined)\n location.reload()\n}\n\nasync function getMenuItems (outliner: any) {\n const items = await outliner.getDashboardItems()\n return items.map((element) => {\n return {\n label: element.label,\n onclick: () => openDashboardPane(outliner, element.tabName || element.paneName)\n }\n })\n}\n\nasync function openDashboardPane (outliner: any, pane: string): Promise<void> {\n outliner.showDashboard({\n pane\n })\n}\n"],"file":"header.js"}
|
|
@@ -60,7 +60,7 @@ describe('manager', function () {
|
|
|
60
60
|
it('shows an expand icon', function () {
|
|
61
61
|
var img = result.firstChild;
|
|
62
62
|
expect(img.nodeName).toBe('IMG');
|
|
63
|
-
expect(img).toHaveAttribute('src', 'https://
|
|
63
|
+
expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png');
|
|
64
64
|
});
|
|
65
65
|
it('shows the node label', function () {
|
|
66
66
|
expect(result).toHaveTextContent('namednode.example');
|
|
@@ -131,7 +131,7 @@ describe('manager', function () {
|
|
|
131
131
|
it('shows an expand icon', function () {
|
|
132
132
|
var img = result.firstChild;
|
|
133
133
|
expect(img.nodeName).toBe('IMG');
|
|
134
|
-
expect(img).toHaveAttribute('src', 'https://
|
|
134
|
+
expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png');
|
|
135
135
|
});
|
|
136
136
|
it('shows the phone number', function () {
|
|
137
137
|
expect(result).toHaveTextContent('+1-201-555-0123');
|
|
@@ -149,7 +149,7 @@ describe('manager', function () {
|
|
|
149
149
|
it('is represented by phone icon', function () {
|
|
150
150
|
var phoneIcon = phoneLink.lastChild;
|
|
151
151
|
expect(phoneIcon.nodeName).toBe('IMG');
|
|
152
|
-
expect(phoneIcon).toHaveAttribute('src', 'https://
|
|
152
|
+
expect(phoneIcon).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/silk/telephone.png');
|
|
153
153
|
});
|
|
154
154
|
});
|
|
155
155
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/outline/manager.test.ts"],"names":["MockPane","render","subject","div","document","createElement","appendChild","createTextNode","uri","mockPaneRegistry","list","byName","describe","result","beforeAll","table","row","manager","OutlineManager","dom","session","paneRegistry","outlineObjectTD","it","expect","nodeName","toBe","toHaveAttribute","toHaveClass","toHaveStyle","img","firstChild","toHaveTextContent","label","linkIcon","beforeEach","lastChild","expand","click","parentNode","error","phoneLink","phoneIcon","not","text"],"mappings":"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","sourcesContent":["/* eslint-env jest */\nimport OutlineManager from './manager'\n\nimport { lit, NamedNode, sym, blankNode } from 'rdflib'\nimport { findByText, getByText } from '@testing-library/dom'\n\nconst MockPane = {\n render: (subject: NamedNode) => {\n const div = document.createElement('div')\n div.appendChild(document.createTextNode(`Mock Pane for ${subject.uri}`))\n return div\n }\n}\n\nconst mockPaneRegistry = {\n list: [],\n byName: () => MockPane\n}\n\ndescribe('manager', () => {\n describe('outline object td', () => {\n describe('for a named node', () => {\n let result\n beforeAll(() => {\n const table = document.createElement('table')\n const row = document.createElement('tr')\n table.appendChild(row)\n const manager = new OutlineManager({ dom: document, session: { paneRegistry: mockPaneRegistry } })\n result = manager.outlineObjectTD(sym('https://namednode.example/'), null, null, null)\n row.appendChild(result)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('about attribute refers to node', () => {\n expect(result).toHaveAttribute('about', '<https://namednode.example/>')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows an expand icon', () => {\n const img = result.firstChild\n expect(img.nodeName).toBe('IMG')\n expect(img).toHaveAttribute('src', 'https://solid.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')\n })\n it('shows the node label', () => {\n expect(result).toHaveTextContent('namednode.example')\n })\n it('label is draggable', () => {\n const label = getByText(result, 'namednode.example')\n expect(label).toHaveAttribute('draggable', 'true')\n })\n describe('link icon', () => {\n let linkIcon\n beforeEach(() => {\n const label = getByText(result, 'namednode.example')\n linkIcon = label.lastChild\n })\n it('is linked to named node URI', () => {\n expect(linkIcon.nodeName).toBe('A')\n expect(linkIcon).toHaveAttribute('href', 'https://namednode.example/')\n })\n })\n describe('expanding', () => {\n it('renders relevant pane', async () => {\n const expand = result.firstChild\n expand.click()\n const error = await findByText(result.parentNode, /Mock Pane/)\n expect(error).toHaveTextContent('Mock Pane for https://namednode.example/')\n })\n })\n })\n\n describe('for a tel uri', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(sym('tel:+1-201-555-0123'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('about attribute refers to tel uri', () => {\n expect(result).toHaveAttribute('about', '<tel:+1-201-555-0123>')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows an expand icon', () => {\n const img = result.firstChild\n expect(img.nodeName).toBe('IMG')\n expect(img).toHaveAttribute('src', 'https://solid.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')\n })\n it('shows the phone number', () => {\n expect(result).toHaveTextContent('+1-201-555-0123')\n })\n describe('phone link', () => {\n let phoneLink\n beforeAll(() => {\n const label = getByText(result, '+1-201-555-0123')\n phoneLink = label.lastChild\n })\n it('is linked to tel uri', () => {\n expect(phoneLink.nodeName).toBe('A')\n expect(phoneLink).toHaveAttribute('href', 'tel:+1-201-555-0123')\n })\n it('is represented by phone icon', () => {\n const phoneIcon = phoneLink.lastChild\n expect(phoneIcon.nodeName).toBe('IMG')\n expect(phoneIcon).toHaveAttribute('src', 'https://solid.github.io/solid-ui/src/originalIcons/silk/telephone.png')\n })\n })\n })\n\n describe('for a literal', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(lit('some text'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('has no about attribute', () => {\n expect(result).not.toHaveAttribute('about')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows the literal text', () => {\n expect(result).toHaveTextContent('some text')\n })\n it('literal text preserves white space', () => {\n const text = getByText(result, 'some text')\n expect(text).toHaveStyle('white-space: pre-wrap;')\n })\n })\n\n describe('for a blank node', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(blankNode('blank-node'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('has about attribute', () => {\n expect(result).toHaveAttribute('about', '_:blank-node')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows 3 dots', () => {\n expect(result).toHaveTextContent('...')\n })\n })\n })\n})\n"],"file":"manager.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/outline/manager.test.ts"],"names":["MockPane","render","subject","div","document","createElement","appendChild","createTextNode","uri","mockPaneRegistry","list","byName","describe","result","beforeAll","table","row","manager","OutlineManager","dom","session","paneRegistry","outlineObjectTD","it","expect","nodeName","toBe","toHaveAttribute","toHaveClass","toHaveStyle","img","firstChild","toHaveTextContent","label","linkIcon","beforeEach","lastChild","expand","click","parentNode","error","phoneLink","phoneIcon","not","text"],"mappings":"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","sourcesContent":["/* eslint-env jest */\nimport OutlineManager from './manager'\n\nimport { lit, NamedNode, sym, blankNode } from 'rdflib'\nimport { findByText, getByText } from '@testing-library/dom'\n\nconst MockPane = {\n render: (subject: NamedNode) => {\n const div = document.createElement('div')\n div.appendChild(document.createTextNode(`Mock Pane for ${subject.uri}`))\n return div\n }\n}\n\nconst mockPaneRegistry = {\n list: [],\n byName: () => MockPane\n}\n\ndescribe('manager', () => {\n describe('outline object td', () => {\n describe('for a named node', () => {\n let result\n beforeAll(() => {\n const table = document.createElement('table')\n const row = document.createElement('tr')\n table.appendChild(row)\n const manager = new OutlineManager({ dom: document, session: { paneRegistry: mockPaneRegistry } })\n result = manager.outlineObjectTD(sym('https://namednode.example/'), null, null, null)\n row.appendChild(result)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('about attribute refers to node', () => {\n expect(result).toHaveAttribute('about', '<https://namednode.example/>')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows an expand icon', () => {\n const img = result.firstChild\n expect(img.nodeName).toBe('IMG')\n expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')\n })\n it('shows the node label', () => {\n expect(result).toHaveTextContent('namednode.example')\n })\n it('label is draggable', () => {\n const label = getByText(result, 'namednode.example')\n expect(label).toHaveAttribute('draggable', 'true')\n })\n describe('link icon', () => {\n let linkIcon\n beforeEach(() => {\n const label = getByText(result, 'namednode.example')\n linkIcon = label.lastChild\n })\n it('is linked to named node URI', () => {\n expect(linkIcon.nodeName).toBe('A')\n expect(linkIcon).toHaveAttribute('href', 'https://namednode.example/')\n })\n })\n describe('expanding', () => {\n it('renders relevant pane', async () => {\n const expand = result.firstChild\n expand.click()\n const error = await findByText(result.parentNode, /Mock Pane/)\n expect(error).toHaveTextContent('Mock Pane for https://namednode.example/')\n })\n })\n })\n\n describe('for a tel uri', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(sym('tel:+1-201-555-0123'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('about attribute refers to tel uri', () => {\n expect(result).toHaveAttribute('about', '<tel:+1-201-555-0123>')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows an expand icon', () => {\n const img = result.firstChild\n expect(img.nodeName).toBe('IMG')\n expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')\n })\n it('shows the phone number', () => {\n expect(result).toHaveTextContent('+1-201-555-0123')\n })\n describe('phone link', () => {\n let phoneLink\n beforeAll(() => {\n const label = getByText(result, '+1-201-555-0123')\n phoneLink = label.lastChild\n })\n it('is linked to tel uri', () => {\n expect(phoneLink.nodeName).toBe('A')\n expect(phoneLink).toHaveAttribute('href', 'tel:+1-201-555-0123')\n })\n it('is represented by phone icon', () => {\n const phoneIcon = phoneLink.lastChild\n expect(phoneIcon.nodeName).toBe('IMG')\n expect(phoneIcon).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/silk/telephone.png')\n })\n })\n })\n\n describe('for a literal', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(lit('some text'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('has no about attribute', () => {\n expect(result).not.toHaveAttribute('about')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows the literal text', () => {\n expect(result).toHaveTextContent('some text')\n })\n it('literal text preserves white space', () => {\n const text = getByText(result, 'some text')\n expect(text).toHaveStyle('white-space: pre-wrap;')\n })\n })\n\n describe('for a blank node', () => {\n let result\n beforeAll(() => {\n const manager = new OutlineManager({ dom: document })\n result = manager.outlineObjectTD(blankNode('blank-node'), null, null, null)\n })\n it('is a html td element', () => {\n expect(result.nodeName).toBe('TD')\n })\n it('has about attribute', () => {\n expect(result).toHaveAttribute('about', '_:blank-node')\n })\n it('has class obj', () => {\n expect(result).toHaveClass('obj')\n })\n it('is selectable', () => {\n expect(result).toHaveAttribute('notselectable', 'false')\n })\n it('has style', () => {\n expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;')\n })\n it('shows 3 dots', () => {\n expect(result).toHaveTextContent('...')\n })\n })\n })\n})\n"],"file":"manager.test.js"}
|
|
@@ -41,7 +41,7 @@ var editProfileView = {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function renderProfileForm(div, subject) {
|
|
44
|
-
var preferencesForm = (0, _rdflib.sym)('https://
|
|
44
|
+
var preferencesForm = (0, _rdflib.sym)('https://solidos.github.io/solid-panes/dashboard/profileStyle.ttl#this');
|
|
45
45
|
var preferencesFormDoc = preferencesForm.doc();
|
|
46
46
|
|
|
47
47
|
if (!store.holds(undefined, undefined, undefined, preferencesFormDoc)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/profile/editProfile.view.ts"],"names":["highlightColor","style","editProfileView","global","icon","icons","iconBase","name","label","render","subject","context","dom","store","session","complainIfBad","ok","mess","div","appendChild","widgets","errorMessageBlock","renderProfileForm","preferencesForm","preferencesFormDoc","doc","holds","undefined","profileFormText","uri","appendForm","editableProfile","createElement","setAttribute","table","main","bottom","statusArea","comment","str","p","textContent","heading","h","profileContext","me","login","ensureLoadedProfile","then","loggedInContext","profile","updater","Error","any","ns","solid","editable","attachmentList","modify","predicate","foaf","noun","error"],"mappings":";;;;;;;AAWA;;AACA;;AACA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAQA,IAAMA,cAAc,GAAGC,eAAMD,cAAN,IAAwB,SAA/C;AAEA,IAAME,eAA+B,GAAG;AACtCC,EAAAA,MAAM,EAAE,IAD8B;AAGtCC,EAAAA,IAAI,EAAEC,eAAMC,QAAN,GAAiB,iBAHe;AAKtCC,EAAAA,IAAI,EAAE,aALgC;AAOtCC,EAAAA,KAAK,EAAE;AAAA,WAAM,IAAN;AAAA,GAP+B;AAStCC,EAAAA,MAAM,EAAE,gBAAUC,OAAV,EAAmBC,OAAnB,EAA4B;AAClC,QAAMC,GAAG,GAAGD,OAAO,CAACC,GAApB;AACA,QAAMC,KAAK,GAAGF,OAAO,CAACG,OAAR,CAAgBD,KAA9B;;AAEA,aAASE,aAAT,CAAwBC,EAAxB,EAAqCC,IAArC,EAAgD;AAC9C,UAAID,EAAJ,EAAQ;AACRE,MAAAA,GAAG,CAACC,WAAJ,CAAgBC,iBAAQC,iBAAR,CAA0BT,GAA1B,EAA+BK,IAA/B,EAAqC,MAArC,CAAhB;AACD;;AAED,aAASK,iBAAT,CAA4BJ,GAA5B,EAA8CR,OAA9C,EAAkE;AAChE,UAAMa,eAAe,GAAG,iBAAI,
|
|
1
|
+
{"version":3,"sources":["../../src/profile/editProfile.view.ts"],"names":["highlightColor","style","editProfileView","global","icon","icons","iconBase","name","label","render","subject","context","dom","store","session","complainIfBad","ok","mess","div","appendChild","widgets","errorMessageBlock","renderProfileForm","preferencesForm","preferencesFormDoc","doc","holds","undefined","profileFormText","uri","appendForm","editableProfile","createElement","setAttribute","table","main","bottom","statusArea","comment","str","p","textContent","heading","h","profileContext","me","login","ensureLoadedProfile","then","loggedInContext","profile","updater","Error","any","ns","solid","editable","attachmentList","modify","predicate","foaf","noun","error"],"mappings":"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","sourcesContent":["/**\n * Profile Editing App Pane\n *\n * Unlike view panes, this is available any place whatever the real subject,\n * and allows the user to edit their own profile.\n *\n * Usage: paneRegistry.register('profile/profilePane')\n * or standalone script adding onto existing mashlib.\n */\n\nimport { PaneDefinition } from 'pane-registry'\nimport { NamedNode, parse, Store, sym } from 'rdflib'\nimport { icons, login, ns, style, widgets } from 'solid-ui'\nimport { paneDiv } from './profile.dom'\nimport profileFormText from './profileFormText.ttl'\n\nconst highlightColor = style.highlightColor || '#7C4DFF'\n\nconst editProfileView: PaneDefinition = {\n global: true,\n\n icon: icons.iconBase + 'noun_492246.svg',\n\n name: 'editProfile',\n\n label: () => null,\n\n render: function (subject, context) {\n const dom = context.dom\n const store = context.session.store as Store\n\n function complainIfBad (ok: Boolean, mess: any) {\n if (ok) return\n div.appendChild(widgets.errorMessageBlock(dom, mess, '#fee'))\n }\n\n function renderProfileForm (div: HTMLElement, subject: NamedNode) {\n const preferencesForm = sym('https://solidos.github.io/solid-panes/dashboard/profileStyle.ttl#this')\n const preferencesFormDoc = preferencesForm.doc()\n if (!store.holds(undefined, undefined, undefined, preferencesFormDoc)) {\n // If not loaded already\n parse(profileFormText, store, preferencesFormDoc.uri, 'text/turtle', () => null) // Load form directly\n }\n\n widgets.appendForm(\n dom,\n div,\n {},\n subject,\n preferencesForm,\n editableProfile,\n complainIfBad\n )\n } // renderProfileForm\n\n const div = dom.createElement('div')\n let editableProfile: NamedNode | null\n div.setAttribute('style', `border: 0.3em solid ${highlightColor}; border-radius: 0.5em; padding: 0.7em; margin-top:0.7em;`)\n\n const table = div.appendChild(dom.createElement('table'))\n // const top = table.appendChild(dom.createElement('tr'))\n const main = table.appendChild(dom.createElement('tr'))\n const bottom = table.appendChild(dom.createElement('tr'))\n const statusArea = bottom.appendChild(dom.createElement('div'))\n statusArea.setAttribute('style', 'padding: 0.7em;')\n\n function comment (str: string) {\n const p = main.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'padding: 1em;')\n p.textContent = str\n return p\n }\n\n function heading (str: string) {\n const h = main.appendChild(dom.createElement('h3'))\n h.setAttribute('style', 'color:' + highlightColor + ';')\n h.textContent = str\n return h\n }\n\n const profileContext = {\n dom: dom,\n div: main,\n statusArea: statusArea,\n me: null\n }\n login.ensureLoadedProfile(profileContext)\n .then(loggedInContext => {\n const me = loggedInContext.me!\n\n heading('Edit your public profile')\n\n const profile = me.doc()\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (store.any(me, ns.solid('editableProfile'))) {\n editableProfile = store.any(me as any, ns.solid('editableProfile')) as NamedNode\n } else if (store.updater.editable(profile.uri, store)) {\n editableProfile = profile\n } else {\n statusArea.appendChild(widgets.errorMessageBlock(dom, `⚠️ Your profile ${profile} is not editable, so we cannot do much here.`, 'straw'))\n return\n }\n\n comment(`Everything you put here will be public.\n There will be other places to record private things.`)\n\n heading('Your contact information')\n\n main.appendChild(paneDiv(context, me, 'contact'))\n\n heading('People you know who have WebIDs')\n\n comment(`This is your public social network.\n Only put people here to whom you are happy to be publicly connected.\n (You can always keep private track of friends and family in your contacts.)`)\n\n // TODO: would be useful to explain what it means to \"drag people\"\n // what is it that is being dragged?\n // is there a way to search for people (or things to drag) on this page?\n if (editableProfile) {\n comment('Drag people onto the target below to add people.')\n }\n\n widgets.attachmentList(dom, me, main, {\n doc: profile,\n modify: !!editableProfile,\n predicate: ns.foaf('knows'),\n noun: 'friend'\n })\n\n // heading('The style of your public profile') headings are in form now\n renderProfileForm(main, me)\n\n heading('Thank you for filling your profile.')\n }).catch(error => {\n statusArea.appendChild(widgets.errorMessageBlock(dom, error, '#fee'))\n })\n return div\n }\n}\n\nexport default editProfileView\n"],"file":"editProfile.view.js"}
|
package/lib/registerPanes.js
CHANGED
|
@@ -22,7 +22,7 @@ module.exports = function registerPanes(register) {
|
|
|
22
22
|
register(require('./transaction/pane.js'));
|
|
23
23
|
register(require('./transaction/period.js'));
|
|
24
24
|
|
|
25
|
-
var chatPanes = require('chat-pane'); // FIXME: https://github.com/
|
|
25
|
+
var chatPanes = require('chat-pane'); // FIXME: https://github.com/solidos/chat-pane/issues/40
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
if (chatPanes.longChatPane) {
|
package/lib/registerPanes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registerPanes.js"],"names":["module","exports","registerPanes","register","require","chatPanes","longChatPane","shortChatPane"],"mappings":";;AAAAA,MAAM,CAACC,OAAP,GAAiB,SAASC,aAAT,CAAwBC,QAAxB,EAAkC;AACjD;AACF;AACA;AACE;AAEAA,EAAAA,QAAQ,CAACC,OAAO,CAAC,cAAD,CAAR,CAAR,CANiD,CAMf;;AAElCD,EAAAA,QAAQ,CAACC,OAAO,CAAC,4BAAD,CAAR,CAAR,CARiD,CAQD;;AAChDD,EAAAA,QAAQ,CAACC,OAAO,CAAC,gDAAD,CAAR,CAAR,CATiD,CASmB;;AACpED,EAAAA,QAAQ,CAACC,OAAO,CAAC,2BAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,8BAAD,CAAR,CAAR,CAXiD,CAWC;;AAClDD,EAAAA,QAAQ,CAACC,OAAO,CAAC,YAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,eAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,sBAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,eAAD,CAAR,CAAR,CAhBiD,CAiBjD;;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,uBAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,yBAAD,CAAR,CAAR;;AAEA,MAAMC,SAAS,GAAGD,OAAO,CAAC,WAAD,CAAzB,CAtBiD,CAuBjD;;;AACA,MAAIC,SAAS,CAACC,YAAd,EAA4B;AAC1BH,IAAAA,QAAQ,CAACE,SAAS,CAACC,YAAX,CAAR,CAD0B,CACO;;AACjCH,IAAAA,QAAQ,CAACE,SAAS,CAACE,aAAX,CAAR,CAF0B,CAEQ;AACnC,GAHD,MAGO;AACLJ,IAAAA,QAAQ,CAACE,SAAD,CAAR;AACD,GA7BgD,CA8BjD;;;AACAF,EAAAA,QAAQ,CAACC,OAAO,CAAC,cAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,qBAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,4BAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,oBAAD,CAAR,CAAR,CAnCiD,CAoCjD;AAEA;;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,gBAAD,CAAR,CAAR,CAxCiD,CAwCb;;AACpCD,EAAAA,QAAQ,CAACC,OAAO,CAAC,4BAAD,CAAR,CAAR,CAzCiD,CAyCD;;AAEhDD,EAAAA,QAAQ,CAACC,OAAO,CAAC,sBAAD,CAAR,CAAR,CA3CiD,CA2CP;;AAC1CD,EAAAA,QAAQ,CAACC,OAAO,CAAC,sBAAD,CAAR,CAAR,CA5CiD,CA4CP;;AAE1CD,EAAAA,QAAQ,CAACC,OAAO,CAAC,0BAAD,CAAR,CAAR,CA9CiD,CA8CH;;AAC9CD,EAAAA,QAAQ,CAACC,OAAO,CAAC,aAAD,CAAR,CAAR,CA/CiD,CA+ChB;;AACjCD,EAAAA,QAAQ,CAACC,OAAO,CAAC,wBAAD,CAAR,CAAR,CAhDiD,CAgDL;AAC5C;;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,8BAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,iBAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,wBAAD,CAAR,CAAR,CAtDiD,CAsDL;AAC5C;;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,sBAAD,CAAR,CAAR,CAzDiD,CAyDP;;AAC1CD,EAAAA,QAAQ,CAACC,OAAO,CAAC,aAAD,CAAR,CAAR,CA1DiD,CA0DhB;;AACjCD,EAAAA,QAAQ,CAACC,OAAO,CAAC,aAAD,CAAR,CAAR;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,iBAAD,CAAR,CAAR,CA5DiD,CA8DjD;;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,gBAAD,CAAR,CAAR,CA/DiD,CAiEjD;;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,oBAAD,CAAR,CAAR,CAnEiD,CAqEjD;;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,kBAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,cAAD,CAAR,CAAR,CAxEiD,CA0EjD;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,uBAAD,CAAR,CAAR,CA7FiD,CA+FjD;;AACAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,yBAAD,CAAR,CAAR;AAEAD,EAAAA,QAAQ,CAACC,OAAO,CAAC,iBAAD,CAAR,CAAR,CAlGiD,CAoGjD;AACD,CArGD","sourcesContent":["module.exports = function registerPanes (register) {\n /* Note that the earliest panes have priority. So the most specific ones are first.\n **\n */\n // Developer designed:\n\n register(require('profile-pane')) // View someone's public profile - dominates all other panes.\n\n register(require('./profile/editProfile.view')) // Edit my profile. App. 201900802\n register(require('./trustedApplications/trustedApplications.view')) // must be registered before basicPreferences\n register(require('./dashboard/dashboardPane'))\n register(require('./dashboard/basicPreferences')) // 20190702\n register(require('issue-pane'))\n register(require('contacts-pane'))\n register(require('activitystreams-pane'))\n\n register(require('./pad/padPane'))\n // register(require('./argument/argumentPane.js')) // A position in an argument tree\n\n register(require('./transaction/pane.js'))\n register(require('./transaction/period.js'))\n\n const chatPanes = require('chat-pane')\n // FIXME: https://github.com/
|
|
1
|
+
{"version":3,"sources":["../src/registerPanes.js"],"names":["module","exports","registerPanes","register","require","chatPanes","longChatPane","shortChatPane"],"mappings":"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","sourcesContent":["module.exports = function registerPanes (register) {\n /* Note that the earliest panes have priority. So the most specific ones are first.\n **\n */\n // Developer designed:\n\n register(require('profile-pane')) // View someone's public profile - dominates all other panes.\n\n register(require('./profile/editProfile.view')) // Edit my profile. App. 201900802\n register(require('./trustedApplications/trustedApplications.view')) // must be registered before basicPreferences\n register(require('./dashboard/dashboardPane'))\n register(require('./dashboard/basicPreferences')) // 20190702\n register(require('issue-pane'))\n register(require('contacts-pane'))\n register(require('activitystreams-pane'))\n\n register(require('./pad/padPane'))\n // register(require('./argument/argumentPane.js')) // A position in an argument tree\n\n register(require('./transaction/pane.js'))\n register(require('./transaction/period.js'))\n\n const chatPanes = require('chat-pane')\n // FIXME: https://github.com/solidos/chat-pane/issues/40\n if (chatPanes.longChatPane) {\n register(chatPanes.longChatPane) // Long pane must have prio in case short pane tries to do a long pane\n register(chatPanes.shortChatPane) // was './chat/chatPane.js'\n } else {\n register(chatPanes)\n }\n // register(require('./publication/publicationPane.js'))\n register(require('meeting-pane'))\n register(require('./tabbed/tabbedPane'))\n register(require('./schedule/schedulePane.js'))\n\n register(require('./trip/tripPane.js'))\n // register(require('./airPane.js'))\n\n // Content views\n\n register(require('./imagePane.js')) // Basic image view\n register(require('./playlist/playlistPane.js')) // Basic playlist view\n\n register(require('./video/videoPane.js')) // Video clip player\n register(require('./audio/audioPane.js')) // Audio clip player\n\n register(require('./dokieli/dokieliPane.js')) // Should be above dataContentPane\n register(require('folder-pane')) // Should be above dataContentPane\n register(require('./classInstancePane.js')) // Should be above dataContentPane\n // register(require('./dynamic/dynamicPanes.js')) // warp etc warp broken 2017/8\n register(require('./slideshow/slideshowPane.js'))\n\n register(require('./socialPane.js'))\n\n register(require('./humanReadablePane.js')) // A web page as a web page -- how to escape to tabr?\n // register(require('markdown-pane').Pane) // replaced by markdown in humanReadablePane\n\n register(require('./dataContentPane.js')) // Preferred for a data file\n register(require('source-pane')) // edit source\n register(require('./n3Pane.js'))\n register(require('./RDFXMLPane.js'))\n\n // User configured - data driven\n register(require('./form/pane.js'))\n\n // Generic:\n\n register(require('./tableViewPane.js'))\n\n // Fallback totally generic:\n register(require('./defaultPane.js'))\n\n register(require('./ui/pane.js'))\n\n // register(require(\"categoryPane.js\")) // Not useful enough\n // register(require(\"pubsPane.js\")) // not finished\n\n // @@ jambo commented these things out to pare things down temporarily.\n // Note must use // not /* to comment out to make sure expander sees it\n // register(require(\"lawPane.js\"))\n\n // register(require('./microblogPane/microblogPane.js'))\n\n // register(require(\"./social/pane.js\")) // competitor to other social\n // register(require(\"./airPane.js\"))\n // register(require(\"./lawPane.js\"))\n // register(require(\"pushbackPane.js\"))\n // register(require(\"CVPane.js\"))\n // register(require(\"photoPane.js\"))\n // register(require(\"tagPane.js\"))\n // register(require(\"photoImportPane.js\"))\n\n // The sharing pane is fairly generic and administrative 201\n register(require('./sharing/sharingPane'))\n\n // The internals pane is always (almost?) the last as it is the least user-friendly\n register(require('./internal/internalPane'))\n\n register(require('./home/homePane'))\n\n // ENDS\n}\n"],"file":"registerPanes.js"}
|
|
@@ -265,7 +265,7 @@ module.exports = {
|
|
|
265
265
|
var resultsDoc = $rdf.sym(base + 'results.ttl'); // const formsURI = base + 'forms.ttl'
|
|
266
266
|
// We can't in fact host stuff from there because of CORS
|
|
267
267
|
|
|
268
|
-
var formsURI = 'https://
|
|
268
|
+
var formsURI = 'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl';
|
|
269
269
|
var form1 = kb.sym(formsURI + '#form1');
|
|
270
270
|
var form2 = kb.sym(formsURI + '#form2');
|
|
271
271
|
var form3 = kb.sym(formsURI + '#form3');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schedule/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","loggedInContext","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"],"mappings":"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uC,GAAH,CAAOiJ,GAAP,EAAYtM,EAAE,CAACgD,IAAH,CAAQ,MAAR,CAAZ,CAAb;AACA,iBAAOuJ,IAAI,GAAGA,IAAI,CAAChJ,GAAL,CAASiJ,OAAT,CAAiB,SAAjB,EAA4B,EAA5B,CAAH,GAAqC,EAAhD;AACD,SALH,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;;AAEAoB,QAAAA,OAAO,CAACC,GAAR,CAAY,WAAWkK,MAAvB;AACAQ,QAAAA,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBV,MAAvB;AACD,OA1BH,EA2BE,KA3BF;AA6BD,KA7LD,CA9OkC,CA2ahC;AAEF;;AACA;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;AACA;AACA;AACA;AAgBI;AAEA;;;AACA,aAASrC,UAAT,GAAuB;AACrBtG,MAAAA,OAAO,CAAC8F,gBAAR,CAAyB9C,UAAU,CAACjD,GAApC,EAAyC,UAACzB,EAAD,EAAKC,IAAL,E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","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://solid.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.loggedInContext(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.loggedInContext(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 })\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"],"file":"schedulePane.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/schedule/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","loggedInContext","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"],"mappings":"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uC,GAAH,CAAOiJ,GAAP,EAAYtM,EAAE,CAACgD,IAAH,CAAQ,MAAR,CAAZ,CAAb;AACA,iBAAOuJ,IAAI,GAAGA,IAAI,CAAChJ,GAAL,CAASiJ,OAAT,CAAiB,SAAjB,EAA4B,EAA5B,CAAH,GAAqC,EAAhD;AACD,SALH,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;;AAEAoB,QAAAA,OAAO,CAACC,GAAR,CAAY,WAAWkK,MAAvB;AACAQ,QAAAA,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBV,MAAvB;AACD,OA1BH,EA2BE,KA3BF;AA6BD,KA7LD,CA9OkC,CA2ahC;AAEF;;AACA;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;AACA;AACA;AACA;AAgBI;AAEA;;;AACA,aAASrC,UAAT,GAAuB;AACrBtG,MAAAA,OAAO,CAAC8F,gBAAR,CAAyB9C,UAAU,CAACjD,GAApC,EAAyC,UAACzB,EAAD,EAAKC,IAAL,E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","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.loggedInContext(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.loggedInContext(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 })\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"],"file":"schedulePane.js"}
|
package/lib/versionInfo.js
CHANGED
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _default = {
|
|
8
|
-
buildTime: "2022-04-
|
|
9
|
-
commit: "
|
|
8
|
+
buildTime: "2022-04-14T14:07:36Z",
|
|
9
|
+
commit: "7a50b909f8f04e4d4d7ceb4cce6d43ab57f2152e",
|
|
10
10
|
npmInfo: {
|
|
11
11
|
'solid-panes': '3.5.23',
|
|
12
12
|
npm: '6.14.16',
|
package/lib/versionInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACfA,EAAAA,SAAS,EAAE,sBADI;AAEfC,EAAAA,MAAM,EAAE,0CAFO;AAGfC,EAAAA,OAAO,EACP;AACE,mBAAe,QADjB;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,QAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\nbuildTime: \"2022-04-
|
|
1
|
+
{"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACfA,EAAAA,SAAS,EAAE,sBADI;AAEfC,EAAAA,MAAM,EAAE,0CAFO;AAGfC,EAAAA,OAAO,EACP;AACE,mBAAe,QADjB;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,QAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\nbuildTime: \"2022-04-14T14:07:36Z\",\ncommit: \"7a50b909f8f04e4d4d7ceb4cce6d43ab57f2152e\",\nnpmInfo:\n{\n 'solid-panes': '3.5.23',\n npm: '6.14.16',\n ares: '1.18.1',\n brotli: '1.0.9',\n cldr: '40.0',\n icu: '70.1',\n llhttp: '2.1.4',\n modules: '83',\n napi: '8',\n nghttp2: '1.42.0',\n node: '14.19.1',\n openssl: '1.1.1n',\n tz: '2021a3',\n unicode: '14.0',\n uv: '1.42.0',\n v8: '8.4.371.23-node.85',\n zlib: '1.2.11'\n}\n};\n"],"file":"versionInfo.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-panes",
|
|
3
|
-
"version": "3.5.23-
|
|
3
|
+
"version": "3.5.23-7a50b909",
|
|
4
4
|
"description": "Solid-compatible Panes: applets and views for the mashlib and databrowser",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/
|
|
25
|
+
"url": "https://github.com/solidos/solid-panes"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|
|
28
28
|
"solid",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"author": "Tim Berners-Lee <timbl@mit.edu>",
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"bugs": {
|
|
43
|
-
"url": "https://github.com/
|
|
43
|
+
"url": "https://github.com/solidos/solid-panes/issues"
|
|
44
44
|
},
|
|
45
|
-
"homepage": "https://github.com/
|
|
45
|
+
"homepage": "https://github.com/solidos/solid-panes",
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@solid/better-simple-slideshow": "^0.1.0",
|
|
48
48
|
"activitystreams-pane": "^0.6.5",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"rdflib": "^2.2.19",
|
|
59
59
|
"solid-logic": "^1.3.16",
|
|
60
60
|
"solid-namespace": "^0.5.2",
|
|
61
|
-
"solid-ui": "
|
|
61
|
+
"solid-ui": "2.4.21-d3d317b2",
|
|
62
62
|
"source-pane": "^2.2.16"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
@@ -93,7 +93,7 @@ function setupUserTypesSection (
|
|
|
93
93
|
description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.'
|
|
94
94
|
|
|
95
95
|
const userTypesLink = formContainer.appendChild(dom.createElement('a'))
|
|
96
|
-
userTypesLink.href = 'https://github.com/
|
|
96
|
+
userTypesLink.href = 'https://github.com/solidos/userguide/#role'
|
|
97
97
|
userTypesLink.innerText = 'Read more'
|
|
98
98
|
|
|
99
99
|
const formArea = formContainer.appendChild(dom.createElement('div'))
|
|
@@ -146,7 +146,7 @@ async function generateDeletionLink (
|
|
|
146
146
|
*
|
|
147
147
|
* This function infers the deletion link by assuming the URL structure of Node Solid server.
|
|
148
148
|
* In the future, Solid will hopefully provide a standardised way of discovering the deletion link:
|
|
149
|
-
* https://github.com/
|
|
149
|
+
* https://github.com/solidos/data-interoperability-panel/issues/18
|
|
150
150
|
*
|
|
151
151
|
* If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for
|
|
152
152
|
* vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the
|
package/src/mainPage/header.ts
CHANGED
|
@@ -16,8 +16,8 @@ const LOG_OUT_MENU_ITEM = 'Log out'
|
|
|
16
16
|
/**
|
|
17
17
|
* URLS
|
|
18
18
|
*/
|
|
19
|
-
const USER_GUIDE_MENU_URL = 'https://
|
|
20
|
-
const REPORT_A_PROBLEM_MENU_URL = 'https://github.com/
|
|
19
|
+
const USER_GUIDE_MENU_URL = 'https://solidos.github.io/userguide/'
|
|
20
|
+
const REPORT_A_PROBLEM_MENU_URL = 'https://github.com/solidos/solidos/issues'
|
|
21
21
|
|
|
22
22
|
export async function createHeader (store, outliner) {
|
|
23
23
|
initHeader(store, await setUserMenu(outliner), setHeaderOptions())
|
|
@@ -47,7 +47,7 @@ describe('manager', () => {
|
|
|
47
47
|
it('shows an expand icon', () => {
|
|
48
48
|
const img = result.firstChild
|
|
49
49
|
expect(img.nodeName).toBe('IMG')
|
|
50
|
-
expect(img).toHaveAttribute('src', 'https://
|
|
50
|
+
expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')
|
|
51
51
|
})
|
|
52
52
|
it('shows the node label', () => {
|
|
53
53
|
expect(result).toHaveTextContent('namednode.example')
|
|
@@ -101,7 +101,7 @@ describe('manager', () => {
|
|
|
101
101
|
it('shows an expand icon', () => {
|
|
102
102
|
const img = result.firstChild
|
|
103
103
|
expect(img.nodeName).toBe('IMG')
|
|
104
|
-
expect(img).toHaveAttribute('src', 'https://
|
|
104
|
+
expect(img).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/tbl-expand-trans.png')
|
|
105
105
|
})
|
|
106
106
|
it('shows the phone number', () => {
|
|
107
107
|
expect(result).toHaveTextContent('+1-201-555-0123')
|
|
@@ -119,7 +119,7 @@ describe('manager', () => {
|
|
|
119
119
|
it('is represented by phone icon', () => {
|
|
120
120
|
const phoneIcon = phoneLink.lastChild
|
|
121
121
|
expect(phoneIcon.nodeName).toBe('IMG')
|
|
122
|
-
expect(phoneIcon).toHaveAttribute('src', 'https://
|
|
122
|
+
expect(phoneIcon).toHaveAttribute('src', 'https://solidos.github.io/solid-ui/src/originalIcons/silk/telephone.png')
|
|
123
123
|
})
|
|
124
124
|
})
|
|
125
125
|
})
|
|
@@ -35,7 +35,7 @@ const editProfileView: PaneDefinition = {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function renderProfileForm (div: HTMLElement, subject: NamedNode) {
|
|
38
|
-
const preferencesForm = sym('https://
|
|
38
|
+
const preferencesForm = sym('https://solidos.github.io/solid-panes/dashboard/profileStyle.ttl#this')
|
|
39
39
|
const preferencesFormDoc = preferencesForm.doc()
|
|
40
40
|
if (!store.holds(undefined, undefined, undefined, preferencesFormDoc)) {
|
|
41
41
|
// If not loaded already
|
package/src/registerPanes.js
CHANGED
|
@@ -21,7 +21,7 @@ module.exports = function registerPanes (register) {
|
|
|
21
21
|
register(require('./transaction/period.js'))
|
|
22
22
|
|
|
23
23
|
const chatPanes = require('chat-pane')
|
|
24
|
-
// FIXME: https://github.com/
|
|
24
|
+
// FIXME: https://github.com/solidos/chat-pane/issues/40
|
|
25
25
|
if (chatPanes.longChatPane) {
|
|
26
26
|
register(chatPanes.longChatPane) // Long pane must have prio in case short pane tries to do a long pane
|
|
27
27
|
register(chatPanes.shortChatPane) // was './chat/chatPane.js'
|
|
@@ -337,7 +337,7 @@ module.exports = {
|
|
|
337
337
|
// const formsURI = base + 'forms.ttl'
|
|
338
338
|
// We can't in fact host stuff from there because of CORS
|
|
339
339
|
const formsURI =
|
|
340
|
-
'https://
|
|
340
|
+
'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl'
|
|
341
341
|
|
|
342
342
|
const form1 = kb.sym(formsURI + '#form1')
|
|
343
343
|
const form2 = kb.sym(formsURI + '#form2')
|
package/src/versionInfo.ts
CHANGED