solid-ui 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +4 -0
  2. package/dist/841.solid-ui.min.js +1 -1
  3. package/dist/841.solid-ui.min.js.map +1 -1
  4. package/dist/_2b19.solid-ui.js.map +1 -1
  5. package/dist/solid-ui.js +42754 -45728
  6. package/dist/solid-ui.js.map +1 -1
  7. package/dist/solid-ui.min.js +1 -1
  8. package/dist/solid-ui.min.js.LICENSE.txt +1 -5
  9. package/dist/solid-ui.min.js.map +1 -1
  10. package/lib/acl/access-controller.js +48 -49
  11. package/lib/acl/access-controller.js.map +1 -1
  12. package/lib/acl/access-groups.js +40 -40
  13. package/lib/acl/access-groups.js.map +1 -1
  14. package/lib/acl/acl-control.js +18 -19
  15. package/lib/acl/acl-control.js.map +1 -1
  16. package/lib/acl/acl.js +4 -5
  17. package/lib/acl/acl.js.map +1 -1
  18. package/lib/acl/add-agent-buttons.js +51 -52
  19. package/lib/acl/add-agent-buttons.js.map +1 -1
  20. package/lib/chat/bookmarks.js +76 -77
  21. package/lib/chat/bookmarks.js.map +1 -1
  22. package/lib/chat/chatLogic.js +74 -75
  23. package/lib/chat/chatLogic.js.map +1 -1
  24. package/lib/chat/dateFolder.js +66 -67
  25. package/lib/chat/dateFolder.js.map +1 -1
  26. package/lib/chat/infinite.js +218 -220
  27. package/lib/chat/infinite.js.map +1 -1
  28. package/lib/chat/keys.js +62 -63
  29. package/lib/chat/keys.js.map +1 -1
  30. package/lib/chat/message.js +98 -100
  31. package/lib/chat/message.js.map +1 -1
  32. package/lib/chat/messageTools.js +99 -100
  33. package/lib/chat/messageTools.js.map +1 -1
  34. package/lib/chat/signature.d.ts.map +1 -1
  35. package/lib/chat/signature.js +0 -1
  36. package/lib/chat/signature.js.map +1 -1
  37. package/lib/chat/thread.js +57 -61
  38. package/lib/chat/thread.js.map +1 -1
  39. package/lib/create/create.js +1 -2
  40. package/lib/create/create.js.map +1 -1
  41. package/lib/folders.js +1 -4
  42. package/lib/folders.js.map +1 -1
  43. package/lib/footer/index.d.ts.map +1 -1
  44. package/lib/footer/index.js +14 -16
  45. package/lib/footer/index.js.map +1 -1
  46. package/lib/header/index.js +34 -36
  47. package/lib/header/index.js.map +1 -1
  48. package/lib/iconBase.d.ts.map +1 -1
  49. package/lib/iconBase.js +0 -1
  50. package/lib/iconBase.js.map +1 -1
  51. package/lib/index.d.ts +1 -1
  52. package/lib/index.d.ts.map +1 -1
  53. package/lib/index.js +5 -5
  54. package/lib/index.js.map +1 -1
  55. package/lib/log.d.ts +7 -7
  56. package/lib/log.d.ts.map +1 -1
  57. package/lib/log.js +2 -2
  58. package/lib/log.js.map +1 -1
  59. package/lib/login/login.js +217 -222
  60. package/lib/login/login.js.map +1 -1
  61. package/lib/matrix/matrix.js +1 -2
  62. package/lib/matrix/matrix.js.map +1 -1
  63. package/lib/matrix/types.js.map +1 -1
  64. package/lib/media/media-capture.js +3 -4
  65. package/lib/media/media-capture.js.map +1 -1
  66. package/lib/messageArea.js +1 -4
  67. package/lib/messageArea.js.map +1 -1
  68. package/lib/ns.js +1 -2
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +1 -2
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +1 -2
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +1 -2
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/table.js +1 -2
  77. package/lib/table.js.map +1 -1
  78. package/lib/tabs.d.ts.map +1 -1
  79. package/lib/tabs.js +1 -2
  80. package/lib/tabs.js.map +1 -1
  81. package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
  82. package/lib/utils/headerFooterHelpers.js +36 -36
  83. package/lib/utils/headerFooterHelpers.js.map +1 -1
  84. package/lib/utils/index.js +1 -2
  85. package/lib/utils/index.js.map +1 -1
  86. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  87. package/lib/utils/keyHelpers/accessData.js +33 -34
  88. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  89. package/lib/utils/keyHelpers/acl.d.ts.map +1 -1
  90. package/lib/utils/keyHelpers/acl.js +21 -22
  91. package/lib/utils/keyHelpers/acl.js.map +1 -1
  92. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -1
  93. package/lib/utils/keyHelpers/otherHelpers.js +1 -2
  94. package/lib/utils/keyHelpers/otherHelpers.js.map +1 -1
  95. package/lib/utils/label.js +1 -2
  96. package/lib/utils/label.js.map +1 -1
  97. package/lib/versionInfo.d.ts +4 -3
  98. package/lib/versionInfo.d.ts.map +1 -1
  99. package/lib/versionInfo.js +30 -30
  100. package/lib/versionInfo.js.map +1 -1
  101. package/lib/widgets/buttons/iconLinks.d.ts.map +1 -1
  102. package/lib/widgets/buttons/iconLinks.js +2 -2
  103. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  104. package/lib/widgets/buttons.d.ts +1 -1
  105. package/lib/widgets/buttons.d.ts.map +1 -1
  106. package/lib/widgets/buttons.js +1 -3
  107. package/lib/widgets/buttons.js.map +1 -1
  108. package/lib/widgets/dragAndDrop.js +1 -2
  109. package/lib/widgets/dragAndDrop.js.map +1 -1
  110. package/lib/widgets/error.js +1 -2
  111. package/lib/widgets/error.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/autocompleteBar.js +47 -48
  113. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/autocompleteField.js +38 -39
  115. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  116. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  117. package/lib/widgets/forms/autocomplete/autocompletePicker.js +44 -45
  118. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  119. package/lib/widgets/forms/autocomplete/language.js +23 -24
  120. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  121. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  122. package/lib/widgets/forms/autocomplete/publicData.js +91 -93
  123. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  124. package/lib/widgets/forms/basic.js +2 -3
  125. package/lib/widgets/forms/basic.js.map +1 -1
  126. package/lib/widgets/forms/comment.js +1 -2
  127. package/lib/widgets/forms/comment.js.map +1 -1
  128. package/lib/widgets/forms/fieldParams.js +1 -2
  129. package/lib/widgets/forms/fieldParams.js.map +1 -1
  130. package/lib/widgets/forms/formStyle.js +1 -2
  131. package/lib/widgets/forms/formStyle.js.map +1 -1
  132. package/lib/widgets/forms.js +79 -80
  133. package/lib/widgets/forms.js.map +1 -1
  134. package/lib/widgets/index.js +1 -2
  135. package/lib/widgets/index.js.map +1 -1
  136. package/lib/widgets/multiSelect.js +1 -2
  137. package/lib/widgets/multiSelect.js.map +1 -1
  138. package/lib/widgets/peoplePicker.js +1 -2
  139. package/lib/widgets/peoplePicker.js.map +1 -1
  140. package/lib/widgets/widgetHelpers.d.ts.map +1 -1
  141. package/lib/widgets/widgetHelpers.js +3 -3
  142. package/lib/widgets/widgetHelpers.js.map +1 -1
  143. package/package.json +57 -57
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","names":["buttons","_interopRequireWildcard","require","_fieldParams","_fieldFunction","_formStyle","debug","_error","_basic","_autocompleteField","style","_styleConstants","_interopRequireDefault","_iconBase","log","ns","$rdf","_solidLogic","utils","_multiSelect","widgets","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","f","TypeError","o","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","checkMarkCharacter","cancelCharacter","dashCharacter","kb","store","field","ui","uri","autocompleteField","refreshOpionsSubfieldinGroup","dom","already","subject","dataDoc","callbackFunction","groupDiv","subfields","eles","children","j","mostSpecificClassURI","optionsRender","fieldFunction","newOne","insertBefore","removeChild","container","form","box","createElement","appendChild","key","toNT","createTextNode","already2","x","formDoc","doc","weight0","any","weight","Number","errorMessageBlock","concat","setAttribute","formGroupStyle","display","flexDirection","parts","elements","each","sortBySequence","subFieldFunction","itemChanged","ok","body","widget","change","dependingOn","rdf","cases","values","sameTerm","keys","findTypeURIs","map","sym","c","tests","match","_iterator","_step","termType","err","the","appendForm","debugString","join","addItem","_addItem","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee6","object","toBeInserted","msg","wrap","_callee6$","_context6","prev","newThing","ordered","createListIfNecessary","list","push","saveListThenRefresh","reverse","st","property","updater","update","t0","error","refresh","stop","renderItem","deleteThisItem","_deleteThisItem","_callee3","del","_callee3$","_context3","splice","abrupt","holds","message","subField","moveThisItem","_x","_x2","_moveThisItem","_callee4","event","upwards","_callee4$","_context4","alert","itemDone","fn","element","editable","deleteButtonWithCheck","multipleUIlabel","frame","gridTemplateColumns","gridTemplateRows","moveUpButton","button","icons","iconBase","_ref","_callee","_callee$","_context","_x3","moveDownButton","_ref2","_callee2","_callee2$","_context2","_x4","shim","gridColumn","gridRow","padding","gridRowStart","plusIconURI","orderedNode","Node","toJS","anyJS","label","min","tail","img","title","prompt","textContent","addEventListener","_ref3","_callee5","_eventNotUsed","_callee5$","_context5","_x5","Collection","add","_saveListThenRefresh","_callee7","_callee7$","_context7","fetcher","putBack","vals","li","sort","syncTableToArrayReOrdered","asyncStuff","_asyncStuff","_callee8","extra","_callee8$","_context8","then","basicField","left","width","styleConstants","formFieldNameBoxWidth","right","fieldLabel","fieldStore","text","suppressEmptyUneditable","makeDescription","booleanField","tristate","errorBlock","lab","state","undefined","ins","buildCheckboxForm","category","checkOptions","makeSelectForNestedCategory","p","lhs","rhs","uiFrom","subForm","opts","disambiguate","getSelectorOptions","dataSource","possible","possibleProperties","findMembersNT","fromNT","rdfs","allClassURIs","propertyTriage","op","dp","owl","mint","multiSelect","selector","selectedOptions","possibleOptions","sortByLabel","makeSelectForChoice","innerHTML","multiSelectDiv","IconicMultiSelect","placeholder","selected","select","textField","valueField","init","subscribe","action","filter","stringValue","includes","newObject","is","addSubFormChoice","success","errorBody","selectDiv","_callbackFunction","contents","params","fieldParams","setFieldStyle","suppressIfUneditable","editFormButton","b","_e","ff","parentNode","propertiesForClass","explicit","dc","foaf","forEach","members","used","statementsMatching","predicate","result","findClosest","cla","prop","agenda","shift","lists","supers","formsFor","t1","bottom","bottomTypeURIs","candidates","k","pair","toLowerCase","newButton","theClass","promptForNew","outlineManager","GotoSubject","formBorderColor","formFunction","gotButton","insertMe","linkDone","linkButton","info","rb","removeButton","AJAR_subject","group","desc","rows","split","cols","multilineTextInputStyle","v","saveChange","submit","disabled","color","textInputColorPending","ds","textInputColor","continueButton","visibility","backgroundColor","textInputBackgroundColorUneditable","makeSelectForClassifierOptions","options","uris","sub","warn","actual","getActual","onChange","removeValue","opt","AJAR_mint","mintClass","thisForm","mintStatementsFun","AJAR_uri","currentURI","sel","subSelect","superSelect","doneNew","_body","formSelectStyle","multiple","option","labelWithOntology","firstChild","nullLabel","makeSelectForOptions","makeSelectForCategory","du","subs","child","renderNameValuePair","input","colorCarrier","checkboxInputStyle","fix","why","Error","holdsAll","missing","displayState","negation","defa","boxHandler","toDelete","newState","toInsert","hmmm","now","Date","getTime","inputPossibleOptions","optionsFromClassUIfrom","isEmpty","createDefaultSelectOptionText","firstSelectOptionText","createDefaultSelectOption","hidden","lastChild","createOption","newSelectedOptions","addValue","existingValues","_iterator2","_step2","containsObject","_iterator3","_step3","removeAttribute","obj","thisClass","quad","len2","len4","m","pred","ref1","ref2","ref3","ref4","ref5","seeds","ref","transitiveClosure","rdfFactory","namedNode","len","l","len1","q","len3"],"sources":["../../src/widgets/forms.js"],"sourcesContent":["/* F O R M S\n *\n * A Vanilla Dom implementation of the form language\n */\n/* eslint-disable multiline-ternary */\n\n/* global alert */\n\nimport * as buttons from './buttons'\nimport { fieldParams } from './forms/fieldParams'\nimport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nimport { setFieldStyle } from './forms/formStyle'\nimport * as debug from '../debug'\nimport { errorMessageBlock } from './error'\nimport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic'\nimport { autocompleteField } from './forms/autocomplete/autocompleteField'\nimport * as style from '../style'\nimport styleConstants from '../styleConstants'\n\nimport { icons } from '../iconBase'\nimport * as log from '../log'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { IconicMultiSelect } from './multiSelect'\nimport * as widgets from '../widgets'\nexport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic' // Note default export\n\nexport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nexport { fieldParams } from './forms/fieldParams'\n\nconst checkMarkCharacter = '\\u2713'\nconst cancelCharacter = '\\u2715'\nconst dashCharacter = '-'\nconst kb = store\n\nfield[ns.ui('AutocompleteField').uri] = autocompleteField\n\n// ///////////////////////////////////////////////////////////////////////\n\n/* Form Field implementations\n **\n */\n/** Group of different fields\n **\n ** One type of form field is an ordered Group of other fields.\n ** A Form is actually just the same as a group.\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\nfunction refreshOpionsSubfieldinGroup (dom, already, subject, dataDoc, callbackFunction, groupDiv, subfields) {\n const eles = groupDiv.children\n for (let j = 0; j < subfields.length; j++) {\n // This is really messy.\n const field = subfields[j]\n const t = mostSpecificClassURI(field) // Field type\n if (t === ns.ui('Options').uri) {\n const optionsRender = fieldFunction(dom, field)\n const newOne = optionsRender(\n dom,\n null,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n debug.log('Refreshing Options field by replacing it.') // better to support actual refresh\n groupDiv.insertBefore(newOne, eles[j])\n groupDiv.removeChild(eles[j + 1]) // Remove the old one\n }\n }\n}\n\nfield[ns.ui('Form').uri] = field[ns.ui('Group').uri] =\n function (dom, container, already, subject, form, dataDoc, callbackFunction) {\n const box = dom.createElement('div')\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n // Prevent loops\n if (!form) return\n const key = subject.toNT() + '|' + form.toNT()\n if (already[key]) {\n // been there done that\n box.appendChild(dom.createTextNode('Group: see above ' + key))\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n // const plist = [$rdf.st(subject, ns.owl('sameAs'), subject)] // @@ need prev subject\n // dom.outlineManager.appendPropertyTRs(box, plist)\n // dom.appendChild(plist)\n return box\n }\n const already2 = {}\n for (const x in already) already2[x] = 1\n already2[key] = 1\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n const weight0 = kb.any(form, ui('weight'), null, formDoc) // Say 0-3\n const weight = weight0 ? Number(weight0.value) : 1\n if (weight > 3 || weight < 0) return box.appendChild(errorMessageBlock(dom, `Form Group weight ${weight} should be 0-3`))\n\n box.setAttribute('style', style.formGroupStyle[weight]) // Indent a group\n box.style.display = 'flex'\n box.style.flexDirection = 'column'\n box.class = 'form-weight-' + weight\n\n let parts = kb.any(form, ui('parts'), null, formDoc)\n let subfields\n if (parts) {\n subfields = parts.elements\n } else {\n parts = kb.each(form, ui('part'), null, formDoc) // Warning: unordered\n subfields = sortBySequence(parts)\n }\n if (!parts) {\n return box.appendChild(errorMessageBlock(dom, 'No parts to form! '))\n }\n\n for (let i = 0; i < subfields.length; i++) {\n const field = subfields[i]\n const subFieldFunction = fieldFunction(dom, field) //\n\n const itemChanged = function (ok, body) {\n if (ok && body && body.widget && body.widget === 'select') {\n refreshOpionsSubfieldinGroup(dom, already, subject, dataDoc, callbackFunction, box, subfields)\n }\n callbackFunction(ok, { widget: 'group', change: body })\n }\n box.appendChild(subFieldFunction(dom, null, already2, subject, field, dataDoc, itemChanged))\n }\n return box\n }\n\n/** Options field: Select one or more cases\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\n\nfield[ns.ui('Options').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const box = dom.createElement('div')\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n let dependingOn = kb.any(form, ui('dependingOn'))\n if (!dependingOn) {\n dependingOn = ns.rdf('type')\n } // @@ default to type (do we want defaults?)\n const cases = kb.each(form, ui('case'), null, formDoc)\n if (!cases) {\n box.appendChild(errorMessageBlock(dom, 'No cases to Options form. '))\n }\n let values\n if (dependingOn.sameTerm(ns.rdf('type'))) {\n values = Object.keys(kb.findTypeURIs(subject)).map(uri => $rdf.sym(uri)) // Use RDF-S inference\n } else {\n values = kb.each(subject, dependingOn)\n }\n\n for (let i = 0; i < cases.length; i++) {\n const c = cases[i]\n const tests = kb.each(c, ui('for'), null, formDoc) // There can be multiple 'for'\n let match = false\n for (let j = 0; j < tests.length; j++) {\n for (const value of values) {\n const test = tests[j]\n if (value.sameTerm(tests) ||\n (value.termType === test.termType && value.value === test.value)) {\n match = true\n }\n }\n }\n if (match) {\n const field = kb.the(c, ui('use'))\n if (!field) {\n box.appendChild(\n errorMessageBlock(\n dom,\n 'No \"use\" part for case in form ' + form\n )\n )\n return box\n } else {\n appendForm(\n dom,\n box,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n }\n break\n }\n }\n // @@ Add box.refresh() to sync fields with values\n return box\n}\n\n/** Multiple field: zero or more similar subFields\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n **\n ** Form properties:\n ** @param {Boolean} reverse Make e reverse arc in the data OPS not SPO\n ** @param {NamedNode} property The property to be written in the data\n ** @param {Boolean} ordered Is the list an ordered one where the user defined the order\n */\nfield[ns.ui('Multiple').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n /** Diagnostic function\n */\n function debugString (values) {\n return values.map(x => x.toString().slice(-7)).join(', ')\n }\n\n /** Add an item to the local quadstore not the UI or the web\n *\n * @param {Node} object The RDF object to be represented by this item.\n */\n async function addItem () {\n const object = newThing(dataDoc) // by default just add new nodes\n if (ordered) {\n createListIfNecessary() // Sets list and unsavedList\n list.elements.push(object)\n await saveListThenRefresh()\n } else {\n // eslint-disable-next-line multiline-ternary\n const toBeInserted = reverse ? [$rdf.st(object, property, subject, dataDoc)] : [$rdf.st(subject, property, object, dataDoc)]\n try {\n await kb.updater.update([], toBeInserted)\n } catch (err) {\n const msg = 'Error adding to unordered multiple: ' + err\n box.appendChild(errorMessageBlock(dom, msg))\n debug.error(msg)\n }\n refresh()\n }\n }\n\n /** Make a dom representation for an item\n * @param {Event} anyEvent if used as an event handler\n * @param {Node} object The RDF object to be represented by this item.\n */\n function renderItem (object) {\n async function deleteThisItem () {\n if (ordered) {\n debug.log('pre delete: ' + debugString(list.elements))\n for (let i = 0; i < list.elements.length; i++) {\n if (list.elements[i].sameTerm(object)) {\n list.elements.splice(i, 1)\n await saveListThenRefresh()\n return\n }\n }\n } else {\n // unordered\n if (kb.holds(subject, property, object, dataDoc)) {\n const del = [$rdf.st(subject, property, object, dataDoc)]\n kb.updater.update(del, [], function (uri, ok, message) {\n if (ok) {\n body.removeChild(subField)\n } else {\n body.appendChild(\n errorMessageBlock(\n dom,\n 'Multiple: delete failed: ' + message\n )\n )\n }\n })\n }\n }\n }\n\n /** Move the object up or down in the ordered list\n * @param {Event} anyEvent if used as an event handler\n * @param {Boolean} upwards Move this up (true) or down (false).\n */\n async function moveThisItem (event, upwards) {\n // @@ possibly, allow shift+click to do move to top or bottom?\n debug.log('pre move: ' + debugString(list.elements))\n let i\n for (i = 0; i < list.elements.length; i++) {\n // Find object in array\n if (list.elements[i].sameTerm(object)) {\n break\n }\n }\n if (i === list.elements.length) {\n alert('list move: not found element for ' + object)\n }\n if (upwards) {\n if (i === 0) {\n alert('@@ boop - already at top -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i - 1, 2, list.elements[i], list.elements[i - 1])\n } else {\n // downwards\n if (i === list.elements.length - 1) {\n alert('@@ boop - already at bottom -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i, 2, list.elements[i + 1], list.elements[i])\n }\n await saveListThenRefresh()\n }\n /* A subField has been filled in\n *\n * One possibility is to not actually make the link to the thing until\n * this callback happens to avoid widow links\n */\n function itemDone (ok, message) {\n debug.log(`Item done callback for item ${object.toString()}`)\n if (!ok) { // when does this happen? errors typically deal with upstream\n debug.error(' Item done callback: Error: ' + message)\n }\n callbackFunction(ok, message)\n }\n\n log.debug('Multiple: render object: ' + object)\n\n const fn = fieldFunction(dom, element)\n const subField = fn(dom, null, already, object, element, dataDoc, itemDone) // subfields was: body. moving to not passing that\n subField.subject = object // Keep a back pointer between the DOM array and the RDF objects\n\n // delete button and move buttons\n if (kb.updater.editable(dataDoc.uri)) {\n buttons.deleteButtonWithCheck(dom, subField, multipleUIlabel, deleteThisItem)\n if (ordered) { // Add controsl in a frame\n const frame = dom.createElement('div')\n frame.style.display = 'grid'\n frame.style.gridTemplateColumns = 'auto 3em'\n frame.style.gridTemplateRows = '50% 50%'\n const moveUpButton = buttons.button(\n dom, icons.iconBase + 'noun_1369237.svg', 'Move Up',\n async event => moveThisItem(event, true))\n const moveDownButton = buttons.button(\n dom, icons.iconBase + 'noun_1369241.svg', 'Move Down',\n async event => moveThisItem(event, false))\n const shim = dom.createElement('div')\n shim.appendChild(subField) // Subfield has its own layout\n frame.appendChild(shim)\n\n frame.appendChild(moveUpButton)\n frame.appendChild(moveDownButton)\n moveUpButton.style.gridColumn = 2\n moveDownButton.style.gridColumn = 2\n moveUpButton.style.gridRow = 1\n moveDownButton.style.padding = '0em' // don't take too much space\n moveUpButton.style.padding = '0em'\n\n moveDownButton.style.gridRow = 2\n shim.style.gridColumn = 1\n shim.style.gridRowStart = 'span 2' // Cover both rows\n // shim.style.gridRowEnd = 2 // Cover both rows\n return frame\n }\n }\n return subField // unused\n } // renderItem\n\n /// ///////// Body of Multiple form field implementation\n\n const plusIconURI = icons.iconBase + 'noun_19460_green.svg' // white plus in green circle\n\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = (dom.createElement('div'))\n const shim = box // no shim\n // We don't indent multiple as it is a sort of a prefix of the next field and has contents of one.\n // box.setAttribute('style', 'padding-left: 2em; border: 0.05em solid green;') // Indent a multiple\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n const orderedNode = kb.any(form, ui('ordered'))\n const ordered = orderedNode ? $rdf.Node.toJS(orderedNode) : false\n\n const property = kb.any(form, ui('property'))\n const reverse = kb.anyJS(form, ui('reverse'), null, formDoc)\n if (!property) {\n box.appendChild(\n errorMessageBlock(dom, 'No property to multiple: ' + form)\n ) // used for arcs in the data\n return shim\n }\n let multipleUIlabel = kb.any(form, ui('label'))\n if (!multipleUIlabel) multipleUIlabel = utils.label(property)\n let min = kb.any(form, ui('min')) // This is the minimum number -- default 0\n min = min ? 0 + min.value : 0\n\n const element = kb.any(form, ui('part')) // This is the form to use for each one\n if (!element) {\n box.appendChild(\n errorMessageBlock(dom, 'No part to multiple: ' + form)\n )\n return shim\n }\n\n const body = box.appendChild(dom.createElement('div'))\n body.style.display = 'flex'\n\n body.style.flexDirection = 'column'\n let list // The RDF collection which keeps the ordered version or null\n let values // Initial values - always an array. Even when no list yet.\n values = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (ordered) {\n list = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (list) {\n values = list.elements\n } else {\n values = []\n }\n } else {\n values = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n list = null\n }\n // Add control on the bottom for adding more items\n if (kb.updater.editable(dataDoc.uri)) {\n const tail = box.appendChild(dom.createElement('div'))\n tail.style.padding = '0.5em'\n const img = tail.appendChild(dom.createElement('img'))\n img.setAttribute('src', plusIconURI) // plus sign\n img.setAttribute('style', 'margin: 0.2em; width: 1.5em; height:1.5em')\n img.title = 'Click to add another ' + multipleUIlabel\n const prompt = dom.createElement('span')\n prompt.textContent =\n (values.length === 0 ? 'Add another ' : 'Add ') +\n multipleUIlabel\n tail.addEventListener('click', async _eventNotUsed => {\n await addItem()\n }, true)\n tail.appendChild(prompt)\n }\n\n function createListIfNecessary () {\n if (!list) {\n list = new $rdf.Collection()\n if (reverse) {\n kb.add(list, property, subject, dataDoc)\n } else {\n kb.add(subject, property, list, dataDoc)\n }\n }\n }\n\n async function saveListThenRefresh () {\n debug.log('save list: ' + debugString(list.elements)) // 20191214\n\n createListIfNecessary()\n try {\n await kb.fetcher.putBack(dataDoc)\n } catch (err) {\n box.appendChild(\n errorMessageBlock(dom, 'Error trying to put back a list: ' + err)\n )\n return\n }\n refresh()\n }\n\n function refresh () {\n let vals\n if (ordered) {\n const li = reverse ? kb.the(null, property, subject, dataDoc) : kb.the(subject, property, null, dataDoc)\n vals = li ? li.elements : []\n } else {\n vals = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n vals.sort() // achieve consistency on each refresh\n }\n utils.syncTableToArrayReOrdered(body, vals, renderItem)\n }\n body.refresh = refresh // Allow live update\n refresh()\n\n async function asyncStuff () {\n const extra = min - values.length\n if (extra > 0) {\n for (let j = 0; j < extra; j++) {\n debug.log('Adding extra: min ' + min)\n await addItem() // Add blanks if less than minimum\n }\n await saveListThenRefresh()\n }\n }\n asyncStuff().then(\n () => { debug.log(' Multiple render: async stuff ok') },\n (err) => { debug.error(' Multiple render: async stuff fails. #### ', err) }\n ) // async\n\n return shim\n} // Multiple\n\n/* Text field\n **\n */\n// For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n// or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n//\n\nfield[ns.ui('PhoneField').uri] = basicField\nfield[ns.ui('EmailField').uri] = basicField\nfield[ns.ui('ColorField').uri] = basicField\nfield[ns.ui('DateField').uri] = basicField\nfield[ns.ui('DateTimeField').uri] = basicField\nfield[ns.ui('TimeField').uri] = basicField\nfield[ns.ui('NumericField').uri] = basicField\nfield[ns.ui('IntegerField').uri] = basicField\nfield[ns.ui('DecimalField').uri] = basicField\nfield[ns.ui('FloatField').uri] = basicField\nfield[ns.ui('TextField').uri] = basicField\nfield[ns.ui('SingleLineTextField').uri] = basicField\nfield[ns.ui('NamedNodeURIField').uri] = basicField\n\n/* Multiline Text field\n **\n */\n\nfield[ns.ui('MultiLineTextField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const property = kb.any(form, ui('property'))\n if (!property) {\n return errorMessageBlock(dom, 'No property to text field: ' + form)\n }\n const box = dom.createElement('div')\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const left = box.appendChild(dom.createElement('div'))\n left.style.width = styleConstants.formFieldNameBoxWidth\n const right = box.appendChild(dom.createElement('div'))\n\n left.appendChild(fieldLabel(dom, property, form))\n dataDoc = fieldStore(subject, property, dataDoc)\n\n const text = kb.anyJS(subject, property, null, dataDoc) || ''\n const editable = kb.updater.editable(dataDoc.uri)\n const suppressEmptyUneditable = form && kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n if (!editable && suppressEmptyUneditable && text === '') {\n box.style.display = 'none'\n }\n const field = makeDescription(\n dom,\n kb,\n subject,\n property,\n dataDoc,\n callbackFunction\n )\n right.appendChild(field)\n if (container) container.appendChild(box)\n return box\n}\n\n/* Boolean field and Tri-state version (true/false/null)\n **\n ** @@ todo: remove tristate param\n */\nfunction booleanField (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n tristate\n) {\n const ui = ns.ui\n const kb = store\n const property = kb.any(form, ui('property'))\n if (!property) {\n const errorBlock = errorMessageBlock(\n dom,\n 'No property to boolean field: ' + form\n )\n if (container) container.appendChild(errorBlock)\n return errorBlock\n }\n let lab = kb.any(form, ui('label'))\n if (!lab) lab = utils.label(property, true) // Init capital\n dataDoc = fieldStore(subject, property, dataDoc)\n let state = kb.any(subject, property)\n if (state === undefined) {\n state = false\n } // @@ sure we want that -- or three-state?\n const ins = $rdf.st(subject, property, true, dataDoc)\n const del = $rdf.st(subject, property, false, dataDoc)\n const box = buildCheckboxForm(dom, kb, lab, del, ins, form, dataDoc, tristate)\n if (container) container.appendChild(box)\n return box\n}\nfield[ns.ui('BooleanField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n false\n )\n}\n\nfield[ns.ui('TristateField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n true\n )\n}\n\n/* Classifier field\n **\n ** Nested categories\n **\n ** @@ To do: If a classification changes, then change any dependent Options fields.\n */\n\nfield[ns.ui('Classifier').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const ui = ns.ui\n const category = kb.any(form, ui('category'))\n if (!category) {\n return errorMessageBlock(dom, 'No category for classifier: ' + form)\n }\n log.debug('Classifier: dataDoc=' + dataDoc)\n const checkOptions = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n return callbackFunction(ok, body)\n }\n const box = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n checkOptions\n )\n if (container) container.appendChild(box)\n return box\n}\n\n/** Choice field\n **\n ** Not nested. Generates a link to something from a given class.\n ** Optional subform for the thing selected.\n ** Generates a subForm based on a ui:use form\n ** Will look like:\n ** <div id=dropDownDiv>\n ** <div id=labelOfDropDown>\n ** <div id=selectDiv>\n ** <select id=dropDownSelect>\n ** <option> ....\n ** <subForm>\n ** Alternative implementatons could be:\n ** -- pop-up menu (as here)\n ** -- radio buttons\n ** -- auto-complete typing\n **\n ** TODO: according to ontology ui:choice can also have ns.ui('default') - this is not implemented yet\n */\n\nfield[ns.ui('Choice').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n let p\n const box = dom.createElement('div')\n box.setAttribute('class', 'choiceBox')\n // Set flexDirection column?\n if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName choiceBox-label')\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue choiceBox-selectBox')\n box.appendChild(rhs)\n const property = kb.any(form, ui('property'))\n if (!property) {\n return box.appendChild(errorMessageBlock(dom, 'No property for Choice: ' + form))\n }\n lhs.appendChild(fieldLabel(dom, property, form))\n const uiFrom = kb.any(form, ui('from'))\n if (!uiFrom) {\n return errorMessageBlock(dom, \"No 'from' for Choice: \" + form)\n }\n const subForm = kb.any(form, ui('use')) // Optional\n // const follow = kb.anyJS(form, ui('follow'), null, formDoc) // data doc moves to new subject?\n\n const opts = { form, subForm, disambiguate: false }\n\n function getSelectorOptions (dataSource) {\n let possible = []\n let possibleProperties\n possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc)\n for (const x in findMembersNT(kb, uiFrom, dataSource)) {\n possible.push(kb.fromNT(x))\n } // Use rdfs\n\n if (uiFrom.sameTerm(ns.rdfs('Class'))) {\n for (p in buttons.allClassURIs()) possible.push(kb.sym(p))\n // log.debug(\"%%% Choice field: possible.length 2 = \"+possible.length)\n } else if (uiFrom.sameTerm(ns.rdf('Property'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true // This is a big class, and the labels won't be enough.\n } else if (uiFrom.sameTerm(ns.owl('ObjectProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n } else if (uiFrom.sameTerm(ns.owl('DatatypeProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n }\n\n return possible\n // return sortByLabel(possible)\n }\n\n // TODO: this checks for any occurrence, regardless of true or false setting\n if (kb.any(form, ui('canMintNew'))) {\n opts.mint = '* Create new *' // @@ could be better\n }\n\n const multiSelect = kb.any(form, ui('multiselect')) // Optional\n if (multiSelect) opts.multiSelect = true\n\n // by default searches the dataDoc graph or optionally the full store\n const dataSource = kb.each(form, ui('search-full-store')).length ? null : dataDoc // optional\n\n let selector\n rhs.refresh = function () {\n // from ui:property\n let selectedOptions = kb.each(subject, property, null, dataDoc).map(object => object.value)\n // from ui:from + ui:property\n let possibleOptions = getSelectorOptions(dataSource)\n possibleOptions.push(selectedOptions)\n possibleOptions = sortByLabel(possibleOptions)\n\n selector = makeSelectForChoice(\n dom,\n rhs,\n kb,\n subject,\n property,\n possibleOptions,\n selectedOptions,\n uiFrom,\n opts,\n dataDoc,\n callbackFunction\n )\n rhs.innerHTML = ''\n rhs.appendChild(selector)\n if (multiSelect) {\n const multiSelectDiv = new IconicMultiSelect({\n placeholder: selector.selected,\n select: selector,\n container: rhs,\n textField: 'textField',\n valueField: 'valueField'\n })\n multiSelectDiv.init()\n multiSelectDiv.subscribe(function (event) {\n if (event.action === 'REMOVE_OPTION') {\n selectedOptions = selectedOptions.filter(function (value) {\n return value !== event.value\n })\n }\n if (event.action === 'CLEAR_ALL_OPTIONS') {\n selectedOptions = []\n }\n if (event.action === 'ADD_OPTION') {\n const stringValue = event.value + ''\n if (stringValue.includes('Create new')) {\n const newObject = newThing(dataDoc)\n const is = []\n is.push($rdf.st(subject, property, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n if (subForm) {\n addSubFormChoice(dom, rhs, {}, $rdf.sym(newObject), subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) rhs.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n selectedOptions.push(newObject)\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n } else selectedOptions.push(event.value)\n }\n selector.update(selectedOptions)\n })\n }\n }\n\n rhs.refresh()\n if (selector && selector.refresh) selector.refresh()\n\n return box\n}\n\nfunction addSubFormChoice (dom, selectDiv, already, subject, subForm, dataDoc, callbackFunction) {\n fieldFunction(dom, subForm)(\n dom,\n selectDiv,\n already,\n subject,\n subForm,\n dataDoc,\n callbackFunction\n )\n}\n\n// Documentation - non-interactive fields\n//\n\nfield[ns.ui('Comment').uri] = field[\n ns.ui('Heading').uri\n] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n _callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n let contents = kb.any(form, ui('contents'))\n if (!contents) contents = 'Error: No contents in comment field.'\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const uri = mostSpecificClassURI(form)\n const params = fieldParams[uri] || {}\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element))\n p.textContent = contents\n\n setFieldStyle(p, form)\n\n // Some headings and prompts are only useful to guide user input\n const suppressIfUneditable = kb.anyJS(form, ns.ui('suppressIfUneditable'), null, formDoc)\n const editable = kb.updater.editable(dataDoc.uri)\n if (suppressIfUneditable && !editable) {\n box.style.display = 'none'\n }\n return box\n}\n\n// A button for editing a form (in place, at the moment)\n//\n// When editing forms, make it yellow, when editing thr form form, pink\n// Help people understand how many levels down they are.\n//\nexport function editFormButton (\n dom,\n container,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'Edit ' + utils.label(ns.ui('Form'))\n b.addEventListener(\n 'click',\n function (_e) {\n const ff = appendForm(\n dom,\n container,\n {},\n form,\n ns.ui('FormForm'),\n dataDoc,\n callbackFunction\n )\n ff.setAttribute(\n 'style',\n ns.ui('FormForm').sameTerm(form)\n ? 'background-color: #fee;'\n : 'background-color: #ffffe7;'\n )\n b.parentNode.removeChild(b)\n },\n true\n )\n return b\n}\n\nexport function appendForm (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n) {\n return fieldFunction(dom, form)(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n )\n}\n\n/** Find list of properties for class\n//\n// Three possible sources: Those mentioned in schemas, which exludes many\n// those which occur in the data we already have, and those predicates we\n// have come across anywhere and which are not explicitly excluded from\n// being used with this class.\n*/\n\nexport function propertiesForClass (kb, c) {\n const explicit = kb.each(undefined, ns.rdf('range'), c)\n ;[\n ns.rdfs('comment'),\n ns.dc('title'), // Generic things\n ns.foaf('name'),\n ns.foaf('homepage')\n ].forEach(function (x) {\n explicit.push(x)\n })\n let members = kb.each(undefined, ns.rdf('type'), c)\n if (members.length > 60) members = members.slice(0, 60) // Array supports slice?\n const used = {}\n for (let i = 0; i < (members.length > 60 ? 60 : members.length); i++) {\n kb.statementsMatching(members[i], undefined, undefined).forEach(function (st) {\n used[st.predicate.uri] = true\n })\n }\n explicit.forEach(function (p) {\n used[p.uri] = true\n })\n const result = []\n for (const uri in used) {\n result.push(kb.sym(uri))\n }\n return result\n}\n\n/** Find the closest class\n* @param kb The quad store\n* @param cla - the URI of the class\n* @param prop\n*/\nexport function findClosest (kb, cla, prop) {\n const agenda = [kb.sym(cla)] // ordered - this is breadth first search\n while (agenda.length > 0) {\n const c = agenda.shift() // first\n const lists = kb.each(c, prop)\n log.debug('Lists for ' + c + ', ' + prop + ': ' + lists.length)\n if (lists.length !== 0) return lists\n const supers = kb.each(c, ns.rdfs('subClassOf'))\n for (let i = 0; i < supers.length; i++) {\n agenda.push(supers[i])\n log.debug('findClosest: add super: ' + supers[i])\n }\n }\n return []\n}\n\n// Which forms apply to a given existing subject?\n\nexport function formsFor (subject) {\n const kb = store\n\n log.debug('formsFor: subject=' + subject)\n const t = kb.findTypeURIs(subject)\n let t1\n for (t1 in t) {\n log.debug(' type: ' + t1)\n }\n const bottom = kb.bottomTypeURIs(t) // most specific\n let candidates = []\n for (const b in bottom) {\n // Find the most specific\n log.debug('candidatesFor: trying bottom type =' + b)\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('creationForm'))\n )\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('annotationForm'))\n )\n }\n return candidates\n}\n\nexport function sortBySequence (list) {\n const subfields = list.map(function (p) {\n const k = kb.any(p, ns.ui('sequence'))\n return [k || 9999, p]\n })\n subfields.sort(function (a, b) {\n return a[0] - b[0]\n })\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\nexport function sortByLabel (list) {\n const subfields = list.map(function (p) {\n return [utils.label(p).toLowerCase(), p]\n })\n subfields.sort()\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\n/** Button to add a new whatever using a form\n//\n// @param form - optional form , else will look for one\n// @param dataDoc - optional dataDoc else will prompt for one (unimplemented)\n*/\nexport function newButton (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'New ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n function (_e) {\n b.parentNode.appendChild(\n promptForNew(\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n )\n )\n },\n false\n )\n return b\n}\n\n/** Prompt for new object of a given class\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, Thing this should be linked to when made. Optional.\n// @param predicate - a term, the relationship for the subject link. Optional.\n// @param theClass - an RDFS class containng the object about which the new information is.\n// @param form - the form to be used when a new one. null means please find one.\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n// @returns a dom object with the form DOM\n*/\nexport function promptForNew (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const box = dom.createElement('form')\n\n if (!form) {\n const lists = findClosest(kb, theClass.uri, ns.ui('creationForm'))\n if (lists.length === 0) {\n const p = box.appendChild(dom.createElement('p'))\n p.textContent =\n 'I am sorry, you need to provide information about a ' +\n utils.label(theClass) +\n \" but I don't know enough information about those to ask you.\"\n const b = box.appendChild(dom.createElement('button'))\n b.setAttribute('type', 'button')\n b.setAttribute('style', 'float: right;')\n b.innerHTML = 'Goto ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n function (_e) {\n dom.outlineManager.GotoSubject(\n theClass,\n true,\n undefined,\n true,\n undefined\n )\n },\n false\n )\n return box\n }\n log.debug('lists[0] is ' + lists[0])\n form = lists[0] // Pick any one\n }\n log.debug('form is ' + form)\n box.setAttribute('style', `border: 0.05em solid ${styleConstants.formBorderColor}; color: ${styleConstants.formBorderColor}`) // @@color?\n box.innerHTML = '<h3>New ' + utils.label(theClass) + '</h3>'\n\n const formFunction = fieldFunction(dom, form)\n const object = newThing(dataDoc)\n let gotButton = false\n const itemDone = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n const insertMe = []\n if (subject && !kb.holds(subject, predicate, object, dataDoc)) {\n insertMe.push($rdf.st(subject, predicate, object, dataDoc))\n }\n if (subject && !kb.holds(object, ns.rdf('type'), theClass, dataDoc)) {\n insertMe.push($rdf.st(object, ns.rdf('type'), theClass, dataDoc))\n }\n if (insertMe.length) {\n kb.updater.update([], insertMe, linkDone)\n } else {\n callbackFunction(true, body)\n }\n if (!gotButton) {\n gotButton = box.appendChild(buttons.linkButton(dom, object))\n }\n }\n function linkDone (uri, ok, body) {\n return callbackFunction(ok, body)\n }\n log.info('paneUtils Object is ' + object)\n const f = formFunction(dom, box, {}, object, form, dataDoc, itemDone)\n const rb = buttons.removeButton(dom, f)\n rb.setAttribute('style', 'float: right;')\n box.AJAR_subject = object\n return box\n}\n\nexport function makeDescription (\n dom,\n kb,\n subject,\n predicate,\n dataDoc,\n callbackFunction\n) {\n const group = dom.createElement('div')\n const desc = kb.anyJS(subject, predicate, null, dataDoc) || ''\n\n const field = dom.createElement('textarea')\n group.appendChild(field)\n field.rows = desc ? desc.split('\\n').length + 2 : 2\n field.cols = 80\n\n field.setAttribute('style', style.multilineTextInputStyle)\n if (desc !== null) {\n field.value = desc\n } else {\n // Unless you can make the predicate label disappear with the first click then this is over-cute\n // field.value = utils.label(predicate); // Was\"enter a description here\" @@ possibly: add prompt which disappears\n field.select() // Select it ready for user input -- doesn't work\n }\n\n group.refresh = function () {\n const v = kb.any(subject, predicate, null, dataDoc)\n if (v && v.value !== field.value) {\n field.value = v.value // don't touch widget if no change\n // @@ this is the place to color the field from the user who chanaged it\n }\n }\n function saveChange (_e) {\n submit.disabled = true\n submit.setAttribute('style', 'visibility: hidden; float: right;') // Keep UI clean\n field.disabled = true\n field.style.color = styleConstants.textInputColorPending\n const ds = kb.statementsMatching(subject, predicate, null, dataDoc)\n const is = $rdf.st(subject, predicate, field.value, dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.style.color = styleConstants.textInputColor\n field.disabled = false\n } else {\n group.appendChild(\n errorMessageBlock(\n dom,\n 'Error (while saving change to ' + dataDoc.uri + '): ' + body\n )\n )\n }\n if (callbackFunction) {\n callbackFunction(ok, body)\n }\n })\n }\n\n const editable = kb.updater.editable(dataDoc.uri)\n let submit\n if (editable) {\n submit = widgets.continueButton(dom, saveChange)\n submit.disabled = true // until the filled has been modified\n submit.style.visibility = 'hidden'\n submit.style.float = 'right'\n group.appendChild(submit)\n\n field.addEventListener(\n 'keyup',\n function (_e) {\n // Green means has been changed, not saved yet\n field.style.color = 'green' // setAttribute('style', style + 'color: green;')\n if (submit) {\n submit.disabled = false\n submit.style.visibility = '' // Remove visibility: hidden\n }\n },\n true\n )\n field.addEventListener('change', saveChange, true)\n } else {\n field.disabled = true // @@ change color too\n field.style.backgroundColor = styleConstants.textInputBackgroundColorUneditable\n }\n return group\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.multiple - Boolean - Whether more than one at a time is allowed\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForClassifierOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForClassifierOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0 && !options.mint) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForClassifierOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n actual[x.uri] = true\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n let is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n options.mintClass,\n null,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, newObject, dataDoc))\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n function doneNew (ok, _body) {\n callbackFunction(ok, { widget: 'select', event: 'new' })\n }\n log.info('makeSelectForClassifierOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n if (newObject) {\n const fn = fieldFunction(dom, options.subForm)\n fn(\n dom,\n select.parentNode,\n {},\n newObject,\n options.subForm,\n dataDoc,\n doneNew\n )\n }\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n if (options.multiple) select.setAttribute('multiple', 'true')\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n if (select.currentURI == null && !options.multiple) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForClassifierOptions\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n if (x.uri) {\n actual[x.uri] = true\n }\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n log.info('selectForOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (!select.currentURI) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForOptions\n\n// Make SELECT element to select subclasses\n//\n// If there is any disjoint union it will so a mutually exclusive dropdown\n// Failing that it will do a multiple selection of subclasses.\n// Callback takes (boolean ok, string errorBody)\n\nexport function makeSelectForCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n const du = kb.any(category, ns.owl('disjointUnionOf'))\n let subs\n let multiple = false\n if (!du) {\n subs = kb.each(undefined, ns.rdfs('subClassOf'), category)\n multiple = true\n } else {\n subs = du.elements\n }\n log.debug('Select list length ' + subs.length)\n if (subs.length === 0) {\n return errorMessageBlock(\n dom,\n \"Can't do \" +\n (multiple ? 'multiple ' : '') +\n 'selector with no subclasses of category: ' +\n category\n )\n }\n if (subs.length === 1) {\n return errorMessageBlock(\n dom,\n \"Can't do \" +\n (multiple ? 'multiple ' : '') +\n 'selector with only 1 subclass of category: ' +\n category +\n ':' +\n subs[1]\n )\n }\n return makeSelectForClassifierOptions(\n dom,\n kb,\n subject,\n ns.rdf('type'),\n subs,\n { multiple, nullLabel: '* Select type *' },\n dataDoc,\n callbackFunction\n )\n}\n\n/** Make SELECT element to select subclasses recurively\n//\n// It will so a mutually exclusive dropdown, with another if there are nested\n// disjoint unions.\n//\n// @param callbackFunction takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForNestedCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n function update () {\n if (child) {\n container.removeChild(child)\n child = null\n }\n if (\n select.currentURI &&\n kb.any(kb.sym(select.currentURI), ns.owl('disjointUnionOf'))\n ) {\n child = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n kb.sym(select.currentURI),\n dataDoc,\n callbackFunction\n )\n select.subSelect = child.firstChild\n select.subSelect.superSelect = select\n container.appendChild(child)\n }\n }\n\n const container = dom.createElement('span') // Container\n let child = null\n\n function onChange (ok, body) {\n if (ok) update()\n callbackFunction(ok, body)\n }\n const select = makeSelectForCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n onChange\n )\n container.appendChild(select)\n update()\n return container\n}\n\n/* Build a checkbox from a given statement(s)\n **\n ** If the source document is editable, make the checkbox editable\n **\n ** ins and sel are either statements *or arrays of statements* which should be\n ** made if the checkbox is checed and unchecked respectively.\n ** tristate: Allow ins, or del, or neither\n */\nexport function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, tristate) {\n const box = dom.createElement('div')\n const rhs = renderNameValuePair(dom, kb, box, form, lab)\n const editable = kb.updater.editable(dataDoc.uri)\n\n const input = dom.createElement('button')\n const colorCarrier = input\n input.style = style.checkboxInputStyle\n rhs.appendChild(input)\n\n function fix (x) {\n if (!x) return [] // no statements\n if (x.object) {\n if (!x.why) {\n x.why = dataDoc // be back-compaitible with old code\n }\n return [x] // one statements\n }\n if (x instanceof Array) return x\n throw new Error('buildCheckboxForm: bad param ' + x)\n }\n ins = fix(ins)\n del = fix(del)\n\n function holdsAll (a) {\n const missing = a.filter(\n st => !kb.holds(st.subject, st.predicate, st.object, st.why)\n )\n return missing.length === 0\n }\n function refresh () {\n let state = holdsAll(ins)\n let displayState = state\n if (del.length) {\n const negation = holdsAll(del)\n if (state && negation) {\n box.appendChild(\n widgets.errorMessageBlock(\n dom,\n 'Inconsistent data in dataDoc!\\n' + ins + ' and\\n' + del\n )\n )\n return box\n }\n if (!state && !negation) {\n state = null\n const defa = kb.any(form, ns.ui('default'))\n displayState = defa ? defa.value === '1' : tristate ? null : false\n }\n }\n input.state = state\n input.textContent = {\n true: checkMarkCharacter,\n false: tristate ? cancelCharacter : ' ', // Just use blank when not tristate\n null: dashCharacter\n }[displayState]\n }\n\n refresh()\n if (!editable) return box\n\n const boxHandler = function (_e) {\n colorCarrier.style.color = '#bbb' // grey -- not saved yet\n const toDelete = input.state === true ? ins : input.state === false ? del : []\n input.newState =\n input.state === null\n ? true\n : input.state === true\n ? false\n : tristate\n ? null\n : true\n\n const toInsert =\n input.newState === true ? ins : input.newState === false ? del : []\n debug.log(` Deleting ${toDelete}`)\n debug.log(` Inserting ${toInsert}`)\n kb.updater.update(toDelete, toInsert, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n if (toDelete.why) {\n const hmmm = kb.holds(\n toDelete.subject,\n toDelete.predicate,\n toDelete.object,\n toDelete.why\n )\n if (hmmm) {\n debug.log(' @@@@@ weird if 409 - does hold statement')\n }\n }\n colorCarrier.style.color = '#000'\n colorCarrier.style.backgroundColor = '#fee'\n box.appendChild(\n errorMessageBlock(\n dom,\n `Checkbox: Error updating dataDoc from ${input.state} to ${\n input.newState\n }:\\n\\n${errorBody}`\n )\n )\n } else {\n colorCarrier.style.color = '#000'\n input.state = input.newState\n input.textContent = {\n true: checkMarkCharacter,\n false: cancelCharacter,\n null: dashCharacter\n }[input.state] // @@\n }\n })\n }\n input.addEventListener('click', boxHandler, false)\n return box\n}\n/*\nexport function fieldLabel (dom, property, form) {\n let lab = kb.any(form, ns.ui('label'))\n if (!lab) lab = utils.label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', style.fieldLabelStyle) // Not too blue and no underline\n anchor.textContent = lab\n return anchor\n}\n\nexport function fieldStore (subject, predicate, def) {\n const sts = kb.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (\n sts.length > 0 &&\n sts[0].why.uri &&\n kb.updater.editable(sts[0].why.uri)\n ) {\n return kb.sym(sts[0].why.uri)\n }\n return def\n}\n*/\n/** Mint local ID using timestamp\n * @param {NamedNode} doc - the document in which the ID is to be generated\n */\nexport function newThing (doc) {\n const now = new Date()\n return $rdf.sym(doc.uri + '#' + 'id' + ('' + now.getTime()))\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForChoice (\n dom,\n container,\n kb,\n subject,\n predicate,\n inputPossibleOptions,\n selectedOptions,\n uiFrom,\n options,\n dataDoc,\n callbackFunction\n) {\n const optionsFromClassUIfrom = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < inputPossibleOptions.length; i++) {\n const sub = inputPossibleOptions[i] // @@ Maybe; make this so it works with blank nodes too\n // if (!sub.uri) debug.warn(`makeSelectForChoice: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in optionsFromClassUIfrom) continue\n optionsFromClassUIfrom[sub.uri] = true\n }\n const isEmpty = Object.keys(optionsFromClassUIfrom).length === 0\n if (isEmpty && !options.mint) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForChoice: dataDoc=' + dataDoc)\n\n function createDefaultSelectOptionText () {\n let firstSelectOptionText = '--- choice ---'\n\n if (predicate && !(predicate.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for property: ' + utils.label(predicate) + ' *'\n }\n\n if (subject && !(subject.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for ' + utils.label(subject, true) + ' *'\n }\n return firstSelectOptionText\n }\n\n function createDefaultSelectOption () {\n const option = dom.createElement('option')\n option.appendChild(dom.createTextNode(createDefaultSelectOptionText()))\n option.disabled = true\n option.value = true\n option.hidden = true\n option.selected = true\n\n return option\n }\n\n const onChange = function (_e) {\n container.removeChild(container.lastChild)\n select.refresh()\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.setAttribute('id', 'formSelect')\n select.currentURI = null\n\n for (const uri in optionsFromClassUIfrom) {\n select.appendChild(createOption(uri))\n }\n\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n\n if (select.children.length === 0) select.insertBefore(createDefaultSelectOption(), select.firstChild)\n\n select.update = function (newSelectedOptions) {\n selectedOptions = newSelectedOptions\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n\n const addValue = function (t) {\n if (!kb.holds(subject, predicate, t, dataDoc)) {\n is.push($rdf.st(subject, predicate, t, dataDoc))\n // console.log(\"----value added \" + t)\n }\n if (uiFrom && (!kb.holds(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))) {\n is.push($rdf.st(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n // console.log(\"----added type to value \" + uiFrom)\n }\n }\n\n const existingValues = kb.each(subject, predicate, null, dataDoc).map(object => object.value)\n for (const value of existingValues) {\n if (!containsObject(value, selectedOptions)) removeValue($rdf.sym(value))\n }\n for (const value of selectedOptions) {\n if (!(value in existingValues)) addValue($rdf.sym(value))\n }\n\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (!ok) return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n select.refresh()\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n select.refresh = function () {\n select.disabled = true // unlocked any conflict we had got into\n let is = []\n\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n // not sure if this 'if' is used because I cannot find mintClass\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n uiFrom,\n options.subForm,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n\n // not sure if this 'if' is used because I cannot find mintStatementsFun\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n select.currentURI = newObject\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && containsObject(opt.AJAR_uri, selectedOptions)) {\n select.currentURI = opt.AJAR_uri\n }\n if (!containsObject(opt.AJAR_uri, selectedOptions)) opt.removeAttribute('selected')\n if (containsObject(opt.AJAR_uri, selectedOptions)) opt.setAttribute('selected', 'true')\n }\n\n log.info('selectForOptions: data doc = ' + dataDoc)\n\n if (select.currentURI && options.subForm && !options.multiSelect) {\n addSubFormChoice(dom, container, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) container.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n container.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n select.disabled = false\n }\n\n function createOption (uri) {\n const option = dom.createElement('option')\n const c = kb.sym(uri)\n let label\n if (options.disambiguate) {\n label = utils.labelWithOntology(c, true) // Init. cap\n } else {\n label = utils.label(c, true)\n }\n option.appendChild(dom.createTextNode(label)) // Init.\n option.setAttribute('value', uri)\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (containsObject(c.value, selectedOptions)) {\n option.setAttribute('selected', 'true')\n }\n return option\n }\n\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n\n return select\n} // makeSelectForChoice\n\nfunction containsObject (obj, list) {\n let i\n for (i = 0; i < list.length; i++) {\n if (list[i] === obj) {\n return true\n }\n }\n\n return false\n}\n\n// This functions replaces the findMembersNT (thisClass) from rdflib until we fix: https://github.com/linkeddata/rdflib.js/issues/565\n/**\n * For anything which has thisClass (or any subclass) as its type,\n * or is the object of something which has thisClass (or any subclass) as its range,\n * or subject of something which has thisClass (or any subclass) as its domain\n * We don't bother doing subproperty (yet?) as it doesn't seem to be used\n * much.\n * Get all the Classes of which we can RDFS-infer the subject is a member\n * @return a hash of URIs\n */\nfunction findMembersNT (store, thisClass, quad) {\n let len2\n let len4\n let m\n let pred\n let ref1\n let ref2\n let ref3\n let ref4\n let ref5\n let st\n let u\n const seeds = {}\n seeds[thisClass.toNT()] = true\n const members = {}\n const ref = store.transitiveClosure(seeds, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true)\n for (const t in ref) {\n ref1 = store.statementsMatching(null,\n store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n store.fromNT(t),\n quad)\n for (let i = 0, len = ref1.length; i < len; i++) {\n st = ref1[i]\n members[st.subject.toNT()] = st\n }\n ref2 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#domain'),\n store.fromNT(t),\n quad)\n for (let l = 0, len1 = ref2.length; l < len1; l++) {\n pred = ref2[l]\n ref3 = store.statementsMatching(null, pred, null, quad)\n for (m = 0, len2 = ref3.length; m < len2; m++) {\n st = ref3[m]\n members[st.subject.toNT()] = st\n }\n }\n ref4 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#range'),\n store.fromNT(t),\n quad)\n for (let q = 0, len3 = ref4.length; q < len3; q++) {\n pred = ref4[q]\n ref5 = store.statementsMatching(null, pred, null, quad)\n for (u = 0, len4 = ref5.length; u < len4; u++) {\n st = ref5[u]\n members[st.object.toNT()] = st\n }\n }\n }\n\n return members\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"forms.js","names":["buttons","_interopRequireWildcard","require","_fieldParams","_fieldFunction","_formStyle","debug","_error","_basic","_autocompleteField","style","_styleConstants","_interopRequireDefault","_iconBase","log","ns","$rdf","_solidLogic","utils","_multiSelect","widgets","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t3","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","checkMarkCharacter","cancelCharacter","dashCharacter","kb","store","field","ui","uri","autocompleteField","refreshOpionsSubfieldinGroup","dom","already","subject","dataDoc","callbackFunction","groupDiv","subfields","eles","children","j","mostSpecificClassURI","optionsRender","fieldFunction","newOne","insertBefore","removeChild","container","form","box","createElement","appendChild","key","toNT","createTextNode","already2","x","formDoc","doc","weight0","any","weight","Number","errorMessageBlock","concat","setAttribute","formGroupStyle","display","flexDirection","parts","elements","each","sortBySequence","subFieldFunction","itemChanged","ok","body","widget","change","dependingOn","rdf","cases","values","sameTerm","keys","findTypeURIs","map","sym","c","tests","match","_iterator","_step","termType","err","the","appendForm","debugString","join","addItem","_addItem","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee6","object","toBeInserted","msg","_t","wrap","_context6","prev","newThing","ordered","createListIfNecessary","list","push","saveListThenRefresh","reverse","st","property","updater","update","error","refresh","stop","renderItem","deleteThisItem","_deleteThisItem","_callee3","del","_context3","splice","abrupt","holds","message","subField","moveThisItem","_x","_x2","_moveThisItem","_callee4","event","upwards","_context4","alert","itemDone","fn","element","editable","deleteButtonWithCheck","multipleUIlabel","frame","gridTemplateColumns","gridTemplateRows","moveUpButton","button","icons","iconBase","_ref","_callee","_context","_x3","moveDownButton","_ref2","_callee2","_context2","_x4","shim","gridColumn","gridRow","padding","gridRowStart","plusIconURI","orderedNode","Node","toJS","anyJS","label","min","tail","img","title","prompt","textContent","addEventListener","_ref3","_callee5","_eventNotUsed","_context5","_x5","Collection","add","_saveListThenRefresh","_callee7","_t2","_context7","fetcher","putBack","vals","li","sort","syncTableToArrayReOrdered","asyncStuff","_asyncStuff","_callee8","extra","_context8","then","basicField","left","width","styleConstants","formFieldNameBoxWidth","right","fieldLabel","fieldStore","text","suppressEmptyUneditable","makeDescription","booleanField","tristate","errorBlock","lab","state","undefined","ins","buildCheckboxForm","category","checkOptions","makeSelectForNestedCategory","p","lhs","rhs","uiFrom","subForm","opts","disambiguate","getSelectorOptions","dataSource","possible","possibleProperties","findMembersNT","fromNT","rdfs","allClassURIs","propertyTriage","op","dp","owl","mint","multiSelect","selector","selectedOptions","possibleOptions","sortByLabel","makeSelectForChoice","innerHTML","multiSelectDiv","IconicMultiSelect","placeholder","selected","select","textField","valueField","init","subscribe","action","filter","stringValue","includes","newObject","is","addSubFormChoice","success","errorBody","selectDiv","_callbackFunction","contents","params","fieldParams","setFieldStyle","suppressIfUneditable","editFormButton","b","_e","ff","parentNode","propertiesForClass","explicit","dc","foaf","forEach","members","used","statementsMatching","predicate","result","findClosest","cla","prop","agenda","shift","lists","supers","formsFor","t1","bottom","bottomTypeURIs","candidates","k","pair","toLowerCase","newButton","theClass","promptForNew","outlineManager","GotoSubject","formBorderColor","formFunction","gotButton","insertMe","linkDone","linkButton","info","rb","removeButton","AJAR_subject","group","desc","rows","split","cols","multilineTextInputStyle","v","saveChange","submit","disabled","color","textInputColorPending","ds","textInputColor","continueButton","visibility","backgroundColor","textInputBackgroundColorUneditable","makeSelectForClassifierOptions","options","uris","sub","warn","actual","getActual","onChange","removeValue","opt","AJAR_mint","mintClass","thisForm","mintStatementsFun","AJAR_uri","currentURI","sel","subSelect","superSelect","doneNew","_body","formSelectStyle","multiple","option","labelWithOntology","firstChild","nullLabel","makeSelectForOptions","makeSelectForCategory","du","subs","child","renderNameValuePair","input","colorCarrier","checkboxInputStyle","fix","why","Error","holdsAll","missing","displayState","negation","defa","boxHandler","toDelete","newState","toInsert","hmmm","now","Date","getTime","inputPossibleOptions","optionsFromClassUIfrom","isEmpty","createDefaultSelectOptionText","firstSelectOptionText","createDefaultSelectOption","hidden","lastChild","createOption","newSelectedOptions","addValue","existingValues","_iterator2","_step2","containsObject","_iterator3","_step3","removeAttribute","obj","thisClass","quad","len2","len4","m","pred","ref1","ref2","ref3","ref4","ref5","seeds","ref","transitiveClosure","rdfFactory","namedNode","len","l","len1","q","len3"],"sources":["../../src/widgets/forms.js"],"sourcesContent":["/* F O R M S\n *\n * A Vanilla Dom implementation of the form language\n */\n\n/* global alert */\n\nimport * as buttons from './buttons'\nimport { fieldParams } from './forms/fieldParams'\nimport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nimport { setFieldStyle } from './forms/formStyle'\nimport * as debug from '../debug'\nimport { errorMessageBlock } from './error'\nimport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic'\nimport { autocompleteField } from './forms/autocomplete/autocompleteField'\nimport * as style from '../style'\nimport styleConstants from '../styleConstants'\n\nimport { icons } from '../iconBase'\nimport * as log from '../log'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { IconicMultiSelect } from './multiSelect'\nimport * as widgets from '../widgets'\nexport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic' // Note default export\n\nexport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nexport { fieldParams } from './forms/fieldParams'\n\nconst checkMarkCharacter = '\\u2713'\nconst cancelCharacter = '\\u2715'\nconst dashCharacter = '-'\nconst kb = store\n\nfield[ns.ui('AutocompleteField').uri] = autocompleteField\n\n// ///////////////////////////////////////////////////////////////////////\n\n/* Form Field implementations\n **\n */\n/** Group of different fields\n **\n ** One type of form field is an ordered Group of other fields.\n ** A Form is actually just the same as a group.\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\nfunction refreshOpionsSubfieldinGroup (dom, already, subject, dataDoc, callbackFunction, groupDiv, subfields) {\n const eles = groupDiv.children\n for (let j = 0; j < subfields.length; j++) {\n // This is really messy.\n const field = subfields[j]\n const t = mostSpecificClassURI(field) // Field type\n if (t === ns.ui('Options').uri) {\n const optionsRender = fieldFunction(dom, field)\n const newOne = optionsRender(\n dom,\n null,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n debug.log('Refreshing Options field by replacing it.') // better to support actual refresh\n groupDiv.insertBefore(newOne, eles[j])\n groupDiv.removeChild(eles[j + 1]) // Remove the old one\n }\n }\n}\n\nfield[ns.ui('Form').uri] = field[ns.ui('Group').uri] =\n function (dom, container, already, subject, form, dataDoc, callbackFunction) {\n const box = dom.createElement('div')\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n // Prevent loops\n if (!form) return\n const key = subject.toNT() + '|' + form.toNT()\n if (already[key]) {\n // been there done that\n box.appendChild(dom.createTextNode('Group: see above ' + key))\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n // const plist = [$rdf.st(subject, ns.owl('sameAs'), subject)] // @@ need prev subject\n // dom.outlineManager.appendPropertyTRs(box, plist)\n // dom.appendChild(plist)\n return box\n }\n const already2 = {}\n for (const x in already) already2[x] = 1\n already2[key] = 1\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n const weight0 = kb.any(form, ui('weight'), null, formDoc) // Say 0-3\n const weight = weight0 ? Number(weight0.value) : 1\n if (weight > 3 || weight < 0) return box.appendChild(errorMessageBlock(dom, `Form Group weight ${weight} should be 0-3`))\n\n box.setAttribute('style', style.formGroupStyle[weight]) // Indent a group\n box.style.display = 'flex'\n box.style.flexDirection = 'column'\n box.class = 'form-weight-' + weight\n\n let parts = kb.any(form, ui('parts'), null, formDoc)\n let subfields\n if (parts) {\n subfields = parts.elements\n } else {\n parts = kb.each(form, ui('part'), null, formDoc) // Warning: unordered\n subfields = sortBySequence(parts)\n }\n if (!parts) {\n return box.appendChild(errorMessageBlock(dom, 'No parts to form! '))\n }\n\n for (let i = 0; i < subfields.length; i++) {\n const field = subfields[i]\n const subFieldFunction = fieldFunction(dom, field) //\n\n const itemChanged = function (ok, body) {\n if (ok && body && body.widget && body.widget === 'select') {\n refreshOpionsSubfieldinGroup(dom, already, subject, dataDoc, callbackFunction, box, subfields)\n }\n callbackFunction(ok, { widget: 'group', change: body })\n }\n box.appendChild(subFieldFunction(dom, null, already2, subject, field, dataDoc, itemChanged))\n }\n return box\n }\n\n/** Options field: Select one or more cases\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\n\nfield[ns.ui('Options').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const box = dom.createElement('div')\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n let dependingOn = kb.any(form, ui('dependingOn'))\n if (!dependingOn) {\n dependingOn = ns.rdf('type')\n } // @@ default to type (do we want defaults?)\n const cases = kb.each(form, ui('case'), null, formDoc)\n if (!cases) {\n box.appendChild(errorMessageBlock(dom, 'No cases to Options form. '))\n }\n let values\n if (dependingOn.sameTerm(ns.rdf('type'))) {\n values = Object.keys(kb.findTypeURIs(subject)).map(uri => $rdf.sym(uri)) // Use RDF-S inference\n } else {\n values = kb.each(subject, dependingOn)\n }\n\n for (let i = 0; i < cases.length; i++) {\n const c = cases[i]\n const tests = kb.each(c, ui('for'), null, formDoc) // There can be multiple 'for'\n let match = false\n for (let j = 0; j < tests.length; j++) {\n for (const value of values) {\n const test = tests[j]\n if (value.sameTerm(tests) ||\n (value.termType === test.termType && value.value === test.value)) {\n match = true\n }\n }\n }\n if (match) {\n const field = kb.the(c, ui('use'))\n if (!field) {\n box.appendChild(\n errorMessageBlock(\n dom,\n 'No \"use\" part for case in form ' + form\n )\n )\n return box\n } else {\n appendForm(\n dom,\n box,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n }\n break\n }\n }\n // @@ Add box.refresh() to sync fields with values\n return box\n}\n\n/** Multiple field: zero or more similar subFields\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n **\n ** Form properties:\n ** @param {Boolean} reverse Make e reverse arc in the data OPS not SPO\n ** @param {NamedNode} property The property to be written in the data\n ** @param {Boolean} ordered Is the list an ordered one where the user defined the order\n */\nfield[ns.ui('Multiple').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n /** Diagnostic function\n */\n function debugString (values) {\n return values.map(x => x.toString().slice(-7)).join(', ')\n }\n\n /** Add an item to the local quadstore not the UI or the web\n *\n * @param {Node} object The RDF object to be represented by this item.\n */\n async function addItem () {\n const object = newThing(dataDoc) // by default just add new nodes\n if (ordered) {\n createListIfNecessary() // Sets list and unsavedList\n list.elements.push(object)\n await saveListThenRefresh()\n } else {\n const toBeInserted = reverse ? [$rdf.st(object, property, subject, dataDoc)] : [$rdf.st(subject, property, object, dataDoc)]\n try {\n await kb.updater.update([], toBeInserted)\n } catch (err) {\n const msg = 'Error adding to unordered multiple: ' + err\n box.appendChild(errorMessageBlock(dom, msg))\n debug.error(msg)\n }\n refresh()\n }\n }\n\n /** Make a dom representation for an item\n * @param {Event} anyEvent if used as an event handler\n * @param {Node} object The RDF object to be represented by this item.\n */\n function renderItem (object) {\n async function deleteThisItem () {\n if (ordered) {\n debug.log('pre delete: ' + debugString(list.elements))\n for (let i = 0; i < list.elements.length; i++) {\n if (list.elements[i].sameTerm(object)) {\n list.elements.splice(i, 1)\n await saveListThenRefresh()\n return\n }\n }\n } else {\n // unordered\n if (kb.holds(subject, property, object, dataDoc)) {\n const del = [$rdf.st(subject, property, object, dataDoc)]\n kb.updater.update(del, [], function (uri, ok, message) {\n if (ok) {\n body.removeChild(subField)\n } else {\n body.appendChild(\n errorMessageBlock(\n dom,\n 'Multiple: delete failed: ' + message\n )\n )\n }\n })\n }\n }\n }\n\n /** Move the object up or down in the ordered list\n * @param {Event} anyEvent if used as an event handler\n * @param {Boolean} upwards Move this up (true) or down (false).\n */\n async function moveThisItem (event, upwards) {\n // @@ possibly, allow shift+click to do move to top or bottom?\n debug.log('pre move: ' + debugString(list.elements))\n let i\n for (i = 0; i < list.elements.length; i++) {\n // Find object in array\n if (list.elements[i].sameTerm(object)) {\n break\n }\n }\n if (i === list.elements.length) {\n alert('list move: not found element for ' + object)\n }\n if (upwards) {\n if (i === 0) {\n alert('@@ boop - already at top -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i - 1, 2, list.elements[i], list.elements[i - 1])\n } else {\n // downwards\n if (i === list.elements.length - 1) {\n alert('@@ boop - already at bottom -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i, 2, list.elements[i + 1], list.elements[i])\n }\n await saveListThenRefresh()\n }\n /* A subField has been filled in\n *\n * One possibility is to not actually make the link to the thing until\n * this callback happens to avoid widow links\n */\n function itemDone (ok, message) {\n debug.log(`Item done callback for item ${object.toString()}`)\n if (!ok) { // when does this happen? errors typically deal with upstream\n debug.error(' Item done callback: Error: ' + message)\n }\n callbackFunction(ok, message)\n }\n\n log.debug('Multiple: render object: ' + object)\n\n const fn = fieldFunction(dom, element)\n const subField = fn(dom, null, already, object, element, dataDoc, itemDone) // subfields was: body. moving to not passing that\n subField.subject = object // Keep a back pointer between the DOM array and the RDF objects\n\n // delete button and move buttons\n if (kb.updater.editable(dataDoc.uri)) {\n buttons.deleteButtonWithCheck(dom, subField, multipleUIlabel, deleteThisItem)\n if (ordered) { // Add controsl in a frame\n const frame = dom.createElement('div')\n frame.style.display = 'grid'\n frame.style.gridTemplateColumns = 'auto 3em'\n frame.style.gridTemplateRows = '50% 50%'\n const moveUpButton = buttons.button(\n dom, icons.iconBase + 'noun_1369237.svg', 'Move Up',\n async event => moveThisItem(event, true))\n const moveDownButton = buttons.button(\n dom, icons.iconBase + 'noun_1369241.svg', 'Move Down',\n async event => moveThisItem(event, false))\n const shim = dom.createElement('div')\n shim.appendChild(subField) // Subfield has its own layout\n frame.appendChild(shim)\n\n frame.appendChild(moveUpButton)\n frame.appendChild(moveDownButton)\n moveUpButton.style.gridColumn = 2\n moveDownButton.style.gridColumn = 2\n moveUpButton.style.gridRow = 1\n moveDownButton.style.padding = '0em' // don't take too much space\n moveUpButton.style.padding = '0em'\n\n moveDownButton.style.gridRow = 2\n shim.style.gridColumn = 1\n shim.style.gridRowStart = 'span 2' // Cover both rows\n // shim.style.gridRowEnd = 2 // Cover both rows\n return frame\n }\n }\n return subField // unused\n } // renderItem\n\n /// ///////// Body of Multiple form field implementation\n\n const plusIconURI = icons.iconBase + 'noun_19460_green.svg' // white plus in green circle\n\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = (dom.createElement('div'))\n const shim = box // no shim\n // We don't indent multiple as it is a sort of a prefix of the next field and has contents of one.\n // box.setAttribute('style', 'padding-left: 2em; border: 0.05em solid green;') // Indent a multiple\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n const orderedNode = kb.any(form, ui('ordered'))\n const ordered = orderedNode ? $rdf.Node.toJS(orderedNode) : false\n\n const property = kb.any(form, ui('property'))\n const reverse = kb.anyJS(form, ui('reverse'), null, formDoc)\n if (!property) {\n box.appendChild(\n errorMessageBlock(dom, 'No property to multiple: ' + form)\n ) // used for arcs in the data\n return shim\n }\n let multipleUIlabel = kb.any(form, ui('label'))\n if (!multipleUIlabel) multipleUIlabel = utils.label(property)\n let min = kb.any(form, ui('min')) // This is the minimum number -- default 0\n min = min ? 0 + min.value : 0\n\n const element = kb.any(form, ui('part')) // This is the form to use for each one\n if (!element) {\n box.appendChild(\n errorMessageBlock(dom, 'No part to multiple: ' + form)\n )\n return shim\n }\n\n const body = box.appendChild(dom.createElement('div'))\n body.style.display = 'flex'\n\n body.style.flexDirection = 'column'\n let list // The RDF collection which keeps the ordered version or null\n let values // Initial values - always an array. Even when no list yet.\n values = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (ordered) {\n list = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (list) {\n values = list.elements\n } else {\n values = []\n }\n } else {\n values = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n list = null\n }\n // Add control on the bottom for adding more items\n if (kb.updater.editable(dataDoc.uri)) {\n const tail = box.appendChild(dom.createElement('div'))\n tail.style.padding = '0.5em'\n const img = tail.appendChild(dom.createElement('img'))\n img.setAttribute('src', plusIconURI) // plus sign\n img.setAttribute('style', 'margin: 0.2em; width: 1.5em; height:1.5em')\n img.title = 'Click to add another ' + multipleUIlabel\n const prompt = dom.createElement('span')\n prompt.textContent =\n (values.length === 0 ? 'Add another ' : 'Add ') +\n multipleUIlabel\n tail.addEventListener('click', async _eventNotUsed => {\n await addItem()\n }, true)\n tail.appendChild(prompt)\n }\n\n function createListIfNecessary () {\n if (!list) {\n list = new $rdf.Collection()\n if (reverse) {\n kb.add(list, property, subject, dataDoc)\n } else {\n kb.add(subject, property, list, dataDoc)\n }\n }\n }\n\n async function saveListThenRefresh () {\n debug.log('save list: ' + debugString(list.elements)) // 20191214\n\n createListIfNecessary()\n try {\n await kb.fetcher.putBack(dataDoc)\n } catch (err) {\n box.appendChild(\n errorMessageBlock(dom, 'Error trying to put back a list: ' + err)\n )\n return\n }\n refresh()\n }\n\n function refresh () {\n let vals\n if (ordered) {\n const li = reverse ? kb.the(null, property, subject, dataDoc) : kb.the(subject, property, null, dataDoc)\n vals = li ? li.elements : []\n } else {\n vals = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n vals.sort() // achieve consistency on each refresh\n }\n utils.syncTableToArrayReOrdered(body, vals, renderItem)\n }\n body.refresh = refresh // Allow live update\n refresh()\n\n async function asyncStuff () {\n const extra = min - values.length\n if (extra > 0) {\n for (let j = 0; j < extra; j++) {\n debug.log('Adding extra: min ' + min)\n await addItem() // Add blanks if less than minimum\n }\n await saveListThenRefresh()\n }\n }\n asyncStuff().then(\n () => { debug.log(' Multiple render: async stuff ok') },\n (err) => { debug.error(' Multiple render: async stuff fails. #### ', err) }\n ) // async\n\n return shim\n} // Multiple\n\n/* Text field\n **\n */\n// For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n// or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n//\n\nfield[ns.ui('PhoneField').uri] = basicField\nfield[ns.ui('EmailField').uri] = basicField\nfield[ns.ui('ColorField').uri] = basicField\nfield[ns.ui('DateField').uri] = basicField\nfield[ns.ui('DateTimeField').uri] = basicField\nfield[ns.ui('TimeField').uri] = basicField\nfield[ns.ui('NumericField').uri] = basicField\nfield[ns.ui('IntegerField').uri] = basicField\nfield[ns.ui('DecimalField').uri] = basicField\nfield[ns.ui('FloatField').uri] = basicField\nfield[ns.ui('TextField').uri] = basicField\nfield[ns.ui('SingleLineTextField').uri] = basicField\nfield[ns.ui('NamedNodeURIField').uri] = basicField\n\n/* Multiline Text field\n **\n */\n\nfield[ns.ui('MultiLineTextField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const property = kb.any(form, ui('property'))\n if (!property) {\n return errorMessageBlock(dom, 'No property to text field: ' + form)\n }\n const box = dom.createElement('div')\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const left = box.appendChild(dom.createElement('div'))\n left.style.width = styleConstants.formFieldNameBoxWidth\n const right = box.appendChild(dom.createElement('div'))\n\n left.appendChild(fieldLabel(dom, property, form))\n dataDoc = fieldStore(subject, property, dataDoc)\n\n const text = kb.anyJS(subject, property, null, dataDoc) || ''\n const editable = kb.updater.editable(dataDoc.uri)\n const suppressEmptyUneditable = form && kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n if (!editable && suppressEmptyUneditable && text === '') {\n box.style.display = 'none'\n }\n const field = makeDescription(\n dom,\n kb,\n subject,\n property,\n dataDoc,\n callbackFunction\n )\n right.appendChild(field)\n if (container) container.appendChild(box)\n return box\n}\n\n/* Boolean field and Tri-state version (true/false/null)\n **\n ** @@ todo: remove tristate param\n */\nfunction booleanField (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n tristate\n) {\n const ui = ns.ui\n const kb = store\n const property = kb.any(form, ui('property'))\n if (!property) {\n const errorBlock = errorMessageBlock(\n dom,\n 'No property to boolean field: ' + form\n )\n if (container) container.appendChild(errorBlock)\n return errorBlock\n }\n let lab = kb.any(form, ui('label'))\n if (!lab) lab = utils.label(property, true) // Init capital\n dataDoc = fieldStore(subject, property, dataDoc)\n let state = kb.any(subject, property)\n if (state === undefined) {\n state = false\n } // @@ sure we want that -- or three-state?\n const ins = $rdf.st(subject, property, true, dataDoc)\n const del = $rdf.st(subject, property, false, dataDoc)\n const box = buildCheckboxForm(dom, kb, lab, del, ins, form, dataDoc, tristate)\n if (container) container.appendChild(box)\n return box\n}\nfield[ns.ui('BooleanField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n false\n )\n}\n\nfield[ns.ui('TristateField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n true\n )\n}\n\n/* Classifier field\n **\n ** Nested categories\n **\n ** @@ To do: If a classification changes, then change any dependent Options fields.\n */\n\nfield[ns.ui('Classifier').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const ui = ns.ui\n const category = kb.any(form, ui('category'))\n if (!category) {\n return errorMessageBlock(dom, 'No category for classifier: ' + form)\n }\n log.debug('Classifier: dataDoc=' + dataDoc)\n const checkOptions = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n return callbackFunction(ok, body)\n }\n const box = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n checkOptions\n )\n if (container) container.appendChild(box)\n return box\n}\n\n/** Choice field\n **\n ** Not nested. Generates a link to something from a given class.\n ** Optional subform for the thing selected.\n ** Generates a subForm based on a ui:use form\n ** Will look like:\n ** <div id=dropDownDiv>\n ** <div id=labelOfDropDown>\n ** <div id=selectDiv>\n ** <select id=dropDownSelect>\n ** <option> ....\n ** <subForm>\n ** Alternative implementatons could be:\n ** -- pop-up menu (as here)\n ** -- radio buttons\n ** -- auto-complete typing\n **\n ** TODO: according to ontology ui:choice can also have ns.ui('default') - this is not implemented yet\n */\n\nfield[ns.ui('Choice').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n let p\n const box = dom.createElement('div')\n box.setAttribute('class', 'choiceBox')\n // Set flexDirection column?\n if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName choiceBox-label')\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue choiceBox-selectBox')\n box.appendChild(rhs)\n const property = kb.any(form, ui('property'))\n if (!property) {\n return box.appendChild(errorMessageBlock(dom, 'No property for Choice: ' + form))\n }\n lhs.appendChild(fieldLabel(dom, property, form))\n const uiFrom = kb.any(form, ui('from'))\n if (!uiFrom) {\n return errorMessageBlock(dom, \"No 'from' for Choice: \" + form)\n }\n const subForm = kb.any(form, ui('use')) // Optional\n // const follow = kb.anyJS(form, ui('follow'), null, formDoc) // data doc moves to new subject?\n\n const opts = { form, subForm, disambiguate: false }\n\n function getSelectorOptions (dataSource) {\n let possible = []\n let possibleProperties\n possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc)\n for (const x in findMembersNT(kb, uiFrom, dataSource)) {\n possible.push(kb.fromNT(x))\n } // Use rdfs\n\n if (uiFrom.sameTerm(ns.rdfs('Class'))) {\n for (p in buttons.allClassURIs()) possible.push(kb.sym(p))\n // log.debug(\"%%% Choice field: possible.length 2 = \"+possible.length)\n } else if (uiFrom.sameTerm(ns.rdf('Property'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true // This is a big class, and the labels won't be enough.\n } else if (uiFrom.sameTerm(ns.owl('ObjectProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n } else if (uiFrom.sameTerm(ns.owl('DatatypeProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n }\n\n return possible\n // return sortByLabel(possible)\n }\n\n // TODO: this checks for any occurrence, regardless of true or false setting\n if (kb.any(form, ui('canMintNew'))) {\n opts.mint = '* Create new *' // @@ could be better\n }\n\n const multiSelect = kb.any(form, ui('multiselect')) // Optional\n if (multiSelect) opts.multiSelect = true\n\n // by default searches the dataDoc graph or optionally the full store\n const dataSource = kb.each(form, ui('search-full-store')).length ? null : dataDoc // optional\n\n let selector\n rhs.refresh = function () {\n // from ui:property\n let selectedOptions = kb.each(subject, property, null, dataDoc).map(object => object.value)\n // from ui:from + ui:property\n let possibleOptions = getSelectorOptions(dataSource)\n possibleOptions.push(selectedOptions)\n possibleOptions = sortByLabel(possibleOptions)\n\n selector = makeSelectForChoice(\n dom,\n rhs,\n kb,\n subject,\n property,\n possibleOptions,\n selectedOptions,\n uiFrom,\n opts,\n dataDoc,\n callbackFunction\n )\n rhs.innerHTML = ''\n rhs.appendChild(selector)\n if (multiSelect) {\n const multiSelectDiv = new IconicMultiSelect({\n placeholder: selector.selected,\n select: selector,\n container: rhs,\n textField: 'textField',\n valueField: 'valueField'\n })\n multiSelectDiv.init()\n multiSelectDiv.subscribe(function (event) {\n if (event.action === 'REMOVE_OPTION') {\n selectedOptions = selectedOptions.filter(function (value) {\n return value !== event.value\n })\n }\n if (event.action === 'CLEAR_ALL_OPTIONS') {\n selectedOptions = []\n }\n if (event.action === 'ADD_OPTION') {\n const stringValue = event.value + ''\n if (stringValue.includes('Create new')) {\n const newObject = newThing(dataDoc)\n const is = []\n is.push($rdf.st(subject, property, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n if (subForm) {\n addSubFormChoice(dom, rhs, {}, $rdf.sym(newObject), subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) rhs.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n selectedOptions.push(newObject)\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n } else selectedOptions.push(event.value)\n }\n selector.update(selectedOptions)\n })\n }\n }\n\n rhs.refresh()\n if (selector && selector.refresh) selector.refresh()\n\n return box\n}\n\nfunction addSubFormChoice (dom, selectDiv, already, subject, subForm, dataDoc, callbackFunction) {\n fieldFunction(dom, subForm)(\n dom,\n selectDiv,\n already,\n subject,\n subForm,\n dataDoc,\n callbackFunction\n )\n}\n\n// Documentation - non-interactive fields\n//\n\nfield[ns.ui('Comment').uri] = field[\n ns.ui('Heading').uri\n] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n _callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n let contents = kb.any(form, ui('contents'))\n if (!contents) contents = 'Error: No contents in comment field.'\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const uri = mostSpecificClassURI(form)\n const params = fieldParams[uri] || {}\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element))\n p.textContent = contents\n\n setFieldStyle(p, form)\n\n // Some headings and prompts are only useful to guide user input\n const suppressIfUneditable = kb.anyJS(form, ns.ui('suppressIfUneditable'), null, formDoc)\n const editable = kb.updater.editable(dataDoc.uri)\n if (suppressIfUneditable && !editable) {\n box.style.display = 'none'\n }\n return box\n}\n\n// A button for editing a form (in place, at the moment)\n//\n// When editing forms, make it yellow, when editing thr form form, pink\n// Help people understand how many levels down they are.\n//\nexport function editFormButton (\n dom,\n container,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'Edit ' + utils.label(ns.ui('Form'))\n b.addEventListener(\n 'click',\n function (_e) {\n const ff = appendForm(\n dom,\n container,\n {},\n form,\n ns.ui('FormForm'),\n dataDoc,\n callbackFunction\n )\n ff.setAttribute(\n 'style',\n ns.ui('FormForm').sameTerm(form)\n ? 'background-color: #fee;'\n : 'background-color: #ffffe7;'\n )\n b.parentNode.removeChild(b)\n },\n true\n )\n return b\n}\n\nexport function appendForm (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n) {\n return fieldFunction(dom, form)(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n )\n}\n\n/** Find list of properties for class\n//\n// Three possible sources: Those mentioned in schemas, which exludes many\n// those which occur in the data we already have, and those predicates we\n// have come across anywhere and which are not explicitly excluded from\n// being used with this class.\n*/\n\nexport function propertiesForClass (kb, c) {\n const explicit = kb.each(undefined, ns.rdf('range'), c)\n ;[\n ns.rdfs('comment'),\n ns.dc('title'), // Generic things\n ns.foaf('name'),\n ns.foaf('homepage')\n ].forEach(function (x) {\n explicit.push(x)\n })\n let members = kb.each(undefined, ns.rdf('type'), c)\n if (members.length > 60) members = members.slice(0, 60) // Array supports slice?\n const used = {}\n for (let i = 0; i < (members.length > 60 ? 60 : members.length); i++) {\n kb.statementsMatching(members[i], undefined, undefined).forEach(function (st) {\n used[st.predicate.uri] = true\n })\n }\n explicit.forEach(function (p) {\n used[p.uri] = true\n })\n const result = []\n for (const uri in used) {\n result.push(kb.sym(uri))\n }\n return result\n}\n\n/** Find the closest class\n* @param kb The quad store\n* @param cla - the URI of the class\n* @param prop\n*/\nexport function findClosest (kb, cla, prop) {\n const agenda = [kb.sym(cla)] // ordered - this is breadth first search\n while (agenda.length > 0) {\n const c = agenda.shift() // first\n const lists = kb.each(c, prop)\n log.debug('Lists for ' + c + ', ' + prop + ': ' + lists.length)\n if (lists.length !== 0) return lists\n const supers = kb.each(c, ns.rdfs('subClassOf'))\n for (let i = 0; i < supers.length; i++) {\n agenda.push(supers[i])\n log.debug('findClosest: add super: ' + supers[i])\n }\n }\n return []\n}\n\n// Which forms apply to a given existing subject?\n\nexport function formsFor (subject) {\n const kb = store\n\n log.debug('formsFor: subject=' + subject)\n const t = kb.findTypeURIs(subject)\n let t1\n for (t1 in t) {\n log.debug(' type: ' + t1)\n }\n const bottom = kb.bottomTypeURIs(t) // most specific\n let candidates = []\n for (const b in bottom) {\n // Find the most specific\n log.debug('candidatesFor: trying bottom type =' + b)\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('creationForm'))\n )\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('annotationForm'))\n )\n }\n return candidates\n}\n\nexport function sortBySequence (list) {\n const subfields = list.map(function (p) {\n const k = kb.any(p, ns.ui('sequence'))\n return [k || 9999, p]\n })\n subfields.sort(function (a, b) {\n return a[0] - b[0]\n })\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\nexport function sortByLabel (list) {\n const subfields = list.map(function (p) {\n return [utils.label(p).toLowerCase(), p]\n })\n subfields.sort()\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\n/** Button to add a new whatever using a form\n//\n// @param form - optional form , else will look for one\n// @param dataDoc - optional dataDoc else will prompt for one (unimplemented)\n*/\nexport function newButton (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'New ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n function (_e) {\n b.parentNode.appendChild(\n promptForNew(\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n )\n )\n },\n false\n )\n return b\n}\n\n/** Prompt for new object of a given class\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, Thing this should be linked to when made. Optional.\n// @param predicate - a term, the relationship for the subject link. Optional.\n// @param theClass - an RDFS class containng the object about which the new information is.\n// @param form - the form to be used when a new one. null means please find one.\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n// @returns a dom object with the form DOM\n*/\nexport function promptForNew (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const box = dom.createElement('form')\n\n if (!form) {\n const lists = findClosest(kb, theClass.uri, ns.ui('creationForm'))\n if (lists.length === 0) {\n const p = box.appendChild(dom.createElement('p'))\n p.textContent =\n 'I am sorry, you need to provide information about a ' +\n utils.label(theClass) +\n \" but I don't know enough information about those to ask you.\"\n const b = box.appendChild(dom.createElement('button'))\n b.setAttribute('type', 'button')\n b.setAttribute('style', 'float: right;')\n b.innerHTML = 'Goto ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n function (_e) {\n dom.outlineManager.GotoSubject(\n theClass,\n true,\n undefined,\n true,\n undefined\n )\n },\n false\n )\n return box\n }\n log.debug('lists[0] is ' + lists[0])\n form = lists[0] // Pick any one\n }\n log.debug('form is ' + form)\n box.setAttribute('style', `border: 0.05em solid ${styleConstants.formBorderColor}; color: ${styleConstants.formBorderColor}`) // @@color?\n box.innerHTML = '<h3>New ' + utils.label(theClass) + '</h3>'\n\n const formFunction = fieldFunction(dom, form)\n const object = newThing(dataDoc)\n let gotButton = false\n const itemDone = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n const insertMe = []\n if (subject && !kb.holds(subject, predicate, object, dataDoc)) {\n insertMe.push($rdf.st(subject, predicate, object, dataDoc))\n }\n if (subject && !kb.holds(object, ns.rdf('type'), theClass, dataDoc)) {\n insertMe.push($rdf.st(object, ns.rdf('type'), theClass, dataDoc))\n }\n if (insertMe.length) {\n kb.updater.update([], insertMe, linkDone)\n } else {\n callbackFunction(true, body)\n }\n if (!gotButton) {\n gotButton = box.appendChild(buttons.linkButton(dom, object))\n }\n }\n function linkDone (uri, ok, body) {\n return callbackFunction(ok, body)\n }\n log.info('paneUtils Object is ' + object)\n const f = formFunction(dom, box, {}, object, form, dataDoc, itemDone)\n const rb = buttons.removeButton(dom, f)\n rb.setAttribute('style', 'float: right;')\n box.AJAR_subject = object\n return box\n}\n\nexport function makeDescription (\n dom,\n kb,\n subject,\n predicate,\n dataDoc,\n callbackFunction\n) {\n const group = dom.createElement('div')\n const desc = kb.anyJS(subject, predicate, null, dataDoc) || ''\n\n const field = dom.createElement('textarea')\n group.appendChild(field)\n field.rows = desc ? desc.split('\\n').length + 2 : 2\n field.cols = 80\n\n field.setAttribute('style', style.multilineTextInputStyle)\n if (desc !== null) {\n field.value = desc\n } else {\n // Unless you can make the predicate label disappear with the first click then this is over-cute\n // field.value = utils.label(predicate); // Was\"enter a description here\" @@ possibly: add prompt which disappears\n field.select() // Select it ready for user input -- doesn't work\n }\n\n group.refresh = function () {\n const v = kb.any(subject, predicate, null, dataDoc)\n if (v && v.value !== field.value) {\n field.value = v.value // don't touch widget if no change\n // @@ this is the place to color the field from the user who chanaged it\n }\n }\n function saveChange (_e) {\n submit.disabled = true\n submit.setAttribute('style', 'visibility: hidden; float: right;') // Keep UI clean\n field.disabled = true\n field.style.color = styleConstants.textInputColorPending\n const ds = kb.statementsMatching(subject, predicate, null, dataDoc)\n const is = $rdf.st(subject, predicate, field.value, dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.style.color = styleConstants.textInputColor\n field.disabled = false\n } else {\n group.appendChild(\n errorMessageBlock(\n dom,\n 'Error (while saving change to ' + dataDoc.uri + '): ' + body\n )\n )\n }\n if (callbackFunction) {\n callbackFunction(ok, body)\n }\n })\n }\n\n const editable = kb.updater.editable(dataDoc.uri)\n let submit\n if (editable) {\n submit = widgets.continueButton(dom, saveChange)\n submit.disabled = true // until the filled has been modified\n submit.style.visibility = 'hidden'\n submit.style.float = 'right'\n group.appendChild(submit)\n\n field.addEventListener(\n 'keyup',\n function (_e) {\n // Green means has been changed, not saved yet\n field.style.color = 'green' // setAttribute('style', style + 'color: green;')\n if (submit) {\n submit.disabled = false\n submit.style.visibility = '' // Remove visibility: hidden\n }\n },\n true\n )\n field.addEventListener('change', saveChange, true)\n } else {\n field.disabled = true // @@ change color too\n field.style.backgroundColor = styleConstants.textInputBackgroundColorUneditable\n }\n return group\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.multiple - Boolean - Whether more than one at a time is allowed\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForClassifierOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForClassifierOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0 && !options.mint) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForClassifierOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n actual[x.uri] = true\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n let is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n options.mintClass,\n null,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, newObject, dataDoc))\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n function doneNew (ok, _body) {\n callbackFunction(ok, { widget: 'select', event: 'new' })\n }\n log.info('makeSelectForClassifierOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n if (newObject) {\n const fn = fieldFunction(dom, options.subForm)\n fn(\n dom,\n select.parentNode,\n {},\n newObject,\n options.subForm,\n dataDoc,\n doneNew\n )\n }\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n if (options.multiple) select.setAttribute('multiple', 'true')\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n if (select.currentURI == null && !options.multiple) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForClassifierOptions\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n if (x.uri) {\n actual[x.uri] = true\n }\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n log.info('selectForOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (!select.currentURI) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForOptions\n\n// Make SELECT element to select subclasses\n//\n// If there is any disjoint union it will so a mutually exclusive dropdown\n// Failing that it will do a multiple selection of subclasses.\n// Callback takes (boolean ok, string errorBody)\n\nexport function makeSelectForCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n const du = kb.any(category, ns.owl('disjointUnionOf'))\n let subs\n let multiple = false\n if (!du) {\n subs = kb.each(undefined, ns.rdfs('subClassOf'), category)\n multiple = true\n } else {\n subs = du.elements\n }\n log.debug('Select list length ' + subs.length)\n if (subs.length === 0) {\n return errorMessageBlock(\n dom,\n \"Can't do \" +\n (multiple ? 'multiple ' : '') +\n 'selector with no subclasses of category: ' +\n category\n )\n }\n if (subs.length === 1) {\n return errorMessageBlock(\n dom,\n \"Can't do \" +\n (multiple ? 'multiple ' : '') +\n 'selector with only 1 subclass of category: ' +\n category +\n ':' +\n subs[1]\n )\n }\n return makeSelectForClassifierOptions(\n dom,\n kb,\n subject,\n ns.rdf('type'),\n subs,\n { multiple, nullLabel: '* Select type *' },\n dataDoc,\n callbackFunction\n )\n}\n\n/** Make SELECT element to select subclasses recurively\n//\n// It will so a mutually exclusive dropdown, with another if there are nested\n// disjoint unions.\n//\n// @param callbackFunction takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForNestedCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n function update () {\n if (child) {\n container.removeChild(child)\n child = null\n }\n if (\n select.currentURI &&\n kb.any(kb.sym(select.currentURI), ns.owl('disjointUnionOf'))\n ) {\n child = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n kb.sym(select.currentURI),\n dataDoc,\n callbackFunction\n )\n select.subSelect = child.firstChild\n select.subSelect.superSelect = select\n container.appendChild(child)\n }\n }\n\n const container = dom.createElement('span') // Container\n let child = null\n\n function onChange (ok, body) {\n if (ok) update()\n callbackFunction(ok, body)\n }\n const select = makeSelectForCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n onChange\n )\n container.appendChild(select)\n update()\n return container\n}\n\n/* Build a checkbox from a given statement(s)\n **\n ** If the source document is editable, make the checkbox editable\n **\n ** ins and sel are either statements *or arrays of statements* which should be\n ** made if the checkbox is checed and unchecked respectively.\n ** tristate: Allow ins, or del, or neither\n */\nexport function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, tristate) {\n const box = dom.createElement('div')\n const rhs = renderNameValuePair(dom, kb, box, form, lab)\n const editable = kb.updater.editable(dataDoc.uri)\n\n const input = dom.createElement('button')\n const colorCarrier = input\n input.style = style.checkboxInputStyle\n rhs.appendChild(input)\n\n function fix (x) {\n if (!x) return [] // no statements\n if (x.object) {\n if (!x.why) {\n x.why = dataDoc // be back-compaitible with old code\n }\n return [x] // one statements\n }\n if (x instanceof Array) return x\n throw new Error('buildCheckboxForm: bad param ' + x)\n }\n ins = fix(ins)\n del = fix(del)\n\n function holdsAll (a) {\n const missing = a.filter(\n st => !kb.holds(st.subject, st.predicate, st.object, st.why)\n )\n return missing.length === 0\n }\n function refresh () {\n let state = holdsAll(ins)\n let displayState = state\n if (del.length) {\n const negation = holdsAll(del)\n if (state && negation) {\n box.appendChild(\n widgets.errorMessageBlock(\n dom,\n 'Inconsistent data in dataDoc!\\n' + ins + ' and\\n' + del\n )\n )\n return box\n }\n if (!state && !negation) {\n state = null\n const defa = kb.any(form, ns.ui('default'))\n displayState = defa ? defa.value === '1' : tristate ? null : false\n }\n }\n input.state = state\n input.textContent = {\n true: checkMarkCharacter,\n false: tristate ? cancelCharacter : ' ', // Just use blank when not tristate\n null: dashCharacter\n }[displayState]\n }\n\n refresh()\n if (!editable) return box\n\n const boxHandler = function (_e) {\n colorCarrier.style.color = '#bbb' // grey -- not saved yet\n const toDelete = input.state === true ? ins : input.state === false ? del : []\n input.newState =\n input.state === null\n ? true\n : input.state === true\n ? false\n : tristate\n ? null\n : true\n\n const toInsert =\n input.newState === true ? ins : input.newState === false ? del : []\n debug.log(` Deleting ${toDelete}`)\n debug.log(` Inserting ${toInsert}`)\n kb.updater.update(toDelete, toInsert, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n if (toDelete.why) {\n const hmmm = kb.holds(\n toDelete.subject,\n toDelete.predicate,\n toDelete.object,\n toDelete.why\n )\n if (hmmm) {\n debug.log(' @@@@@ weird if 409 - does hold statement')\n }\n }\n colorCarrier.style.color = '#000'\n colorCarrier.style.backgroundColor = '#fee'\n box.appendChild(\n errorMessageBlock(\n dom,\n `Checkbox: Error updating dataDoc from ${input.state} to ${\n input.newState\n }:\\n\\n${errorBody}`\n )\n )\n } else {\n colorCarrier.style.color = '#000'\n input.state = input.newState\n input.textContent = {\n true: checkMarkCharacter,\n false: cancelCharacter,\n null: dashCharacter\n }[input.state] // @@\n }\n })\n }\n input.addEventListener('click', boxHandler, false)\n return box\n}\n/*\nexport function fieldLabel (dom, property, form) {\n let lab = kb.any(form, ns.ui('label'))\n if (!lab) lab = utils.label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', style.fieldLabelStyle) // Not too blue and no underline\n anchor.textContent = lab\n return anchor\n}\n\nexport function fieldStore (subject, predicate, def) {\n const sts = kb.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (\n sts.length > 0 &&\n sts[0].why.uri &&\n kb.updater.editable(sts[0].why.uri)\n ) {\n return kb.sym(sts[0].why.uri)\n }\n return def\n}\n*/\n/** Mint local ID using timestamp\n * @param {NamedNode} doc - the document in which the ID is to be generated\n */\nexport function newThing (doc) {\n const now = new Date()\n return $rdf.sym(doc.uri + '#' + 'id' + ('' + now.getTime()))\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForChoice (\n dom,\n container,\n kb,\n subject,\n predicate,\n inputPossibleOptions,\n selectedOptions,\n uiFrom,\n options,\n dataDoc,\n callbackFunction\n) {\n const optionsFromClassUIfrom = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < inputPossibleOptions.length; i++) {\n const sub = inputPossibleOptions[i] // @@ Maybe; make this so it works with blank nodes too\n // if (!sub.uri) debug.warn(`makeSelectForChoice: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in optionsFromClassUIfrom) continue\n optionsFromClassUIfrom[sub.uri] = true\n }\n const isEmpty = Object.keys(optionsFromClassUIfrom).length === 0\n if (isEmpty && !options.mint) {\n return errorMessageBlock(\n dom,\n \"Can't do selector with no options, subject= \" +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForChoice: dataDoc=' + dataDoc)\n\n function createDefaultSelectOptionText () {\n let firstSelectOptionText = '--- choice ---'\n\n if (predicate && !(predicate.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for property: ' + utils.label(predicate) + ' *'\n }\n\n if (subject && !(subject.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for ' + utils.label(subject, true) + ' *'\n }\n return firstSelectOptionText\n }\n\n function createDefaultSelectOption () {\n const option = dom.createElement('option')\n option.appendChild(dom.createTextNode(createDefaultSelectOptionText()))\n option.disabled = true\n option.value = true\n option.hidden = true\n option.selected = true\n\n return option\n }\n\n const onChange = function (_e) {\n container.removeChild(container.lastChild)\n select.refresh()\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.setAttribute('id', 'formSelect')\n select.currentURI = null\n\n for (const uri in optionsFromClassUIfrom) {\n select.appendChild(createOption(uri))\n }\n\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n\n if (select.children.length === 0) select.insertBefore(createDefaultSelectOption(), select.firstChild)\n\n select.update = function (newSelectedOptions) {\n selectedOptions = newSelectedOptions\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n\n const addValue = function (t) {\n if (!kb.holds(subject, predicate, t, dataDoc)) {\n is.push($rdf.st(subject, predicate, t, dataDoc))\n // console.log(\"----value added \" + t)\n }\n if (uiFrom && (!kb.holds(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))) {\n is.push($rdf.st(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n // console.log(\"----added type to value \" + uiFrom)\n }\n }\n\n const existingValues = kb.each(subject, predicate, null, dataDoc).map(object => object.value)\n for (const value of existingValues) {\n if (!containsObject(value, selectedOptions)) removeValue($rdf.sym(value))\n }\n for (const value of selectedOptions) {\n if (!(value in existingValues)) addValue($rdf.sym(value))\n }\n\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (!ok) return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n select.refresh()\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n select.refresh = function () {\n select.disabled = true // unlocked any conflict we had got into\n let is = []\n\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n // not sure if this 'if' is used because I cannot find mintClass\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n uiFrom,\n options.subForm,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n\n // not sure if this 'if' is used because I cannot find mintStatementsFun\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n select.currentURI = newObject\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && containsObject(opt.AJAR_uri, selectedOptions)) {\n select.currentURI = opt.AJAR_uri\n }\n if (!containsObject(opt.AJAR_uri, selectedOptions)) opt.removeAttribute('selected')\n if (containsObject(opt.AJAR_uri, selectedOptions)) opt.setAttribute('selected', 'true')\n }\n\n log.info('selectForOptions: data doc = ' + dataDoc)\n\n if (select.currentURI && options.subForm && !options.multiSelect) {\n addSubFormChoice(dom, container, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) container.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n container.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n select.disabled = false\n }\n\n function createOption (uri) {\n const option = dom.createElement('option')\n const c = kb.sym(uri)\n let label\n if (options.disambiguate) {\n label = utils.labelWithOntology(c, true) // Init. cap\n } else {\n label = utils.label(c, true)\n }\n option.appendChild(dom.createTextNode(label)) // Init.\n option.setAttribute('value', uri)\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (containsObject(c.value, selectedOptions)) {\n option.setAttribute('selected', 'true')\n }\n return option\n }\n\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n\n return select\n} // makeSelectForChoice\n\nfunction containsObject (obj, list) {\n let i\n for (i = 0; i < list.length; i++) {\n if (list[i] === obj) {\n return true\n }\n }\n\n return false\n}\n\n// This functions replaces the findMembersNT (thisClass) from rdflib until we fix: https://github.com/linkeddata/rdflib.js/issues/565\n/**\n * For anything which has thisClass (or any subclass) as its type,\n * or is the object of something which has thisClass (or any subclass) as its range,\n * or subject of something which has thisClass (or any subclass) as its domain\n * We don't bother doing subproperty (yet?) as it doesn't seem to be used\n * much.\n * Get all the Classes of which we can RDFS-infer the subject is a member\n * @return a hash of URIs\n */\nfunction findMembersNT (store, thisClass, quad) {\n let len2\n let len4\n let m\n let pred\n let ref1\n let ref2\n let ref3\n let ref4\n let ref5\n let st\n let u\n const seeds = {}\n seeds[thisClass.toNT()] = true\n const members = {}\n const ref = store.transitiveClosure(seeds, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true)\n for (const t in ref) {\n ref1 = store.statementsMatching(null,\n store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n store.fromNT(t),\n quad)\n for (let i = 0, len = ref1.length; i < len; i++) {\n st = ref1[i]\n members[st.subject.toNT()] = st\n }\n ref2 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#domain'),\n store.fromNT(t),\n quad)\n for (let l = 0, len1 = ref2.length; l < len1; l++) {\n pred = ref2[l]\n ref3 = store.statementsMatching(null, pred, null, quad)\n for (m = 0, len2 = ref3.length; m < len2; m++) {\n st = ref3[m]\n members[st.subject.toNT()] = st\n }\n }\n ref4 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#range'),\n store.fromNT(t),\n quad)\n for (let q = 0, len3 = ref4.length; q < len3; q++) {\n pred = ref4[q]\n ref5 = store.statementsMatching(null, pred, null, quad)\n for (u = 0, len4 = ref5.length; u < len4; u++) {\n st = ref5[u]\n members[st.object.toNT()] = st\n }\n }\n }\n\n return members\n}\n"],"mappings":"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","ignoreList":[]}