solid-panes 4.4.2-1 → 4.4.2-3

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 (386) hide show
  1. package/README.md +10 -10
  2. package/dist/RDFXMLPane.d.ts +2 -3
  3. package/dist/RDFXMLPane2.cjs.js +3 -0
  4. package/dist/RDFXMLPane2.cjs.js.map +1 -0
  5. package/dist/RDFXMLPane2.esm.js +55 -0
  6. package/dist/RDFXMLPane2.esm.js.map +1 -0
  7. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
  8. package/dist/_virtual/~icons/lucide/user.cjs.js +2 -0
  9. package/dist/_virtual/~icons/lucide/user.cjs.js.map +1 -0
  10. package/dist/_virtual/~icons/lucide/user.esm.js +11 -0
  11. package/dist/_virtual/~icons/lucide/user.esm.js.map +1 -0
  12. package/dist/audio/audioPane.cjs.js +2 -0
  13. package/dist/audio/audioPane.cjs.js.map +1 -0
  14. package/dist/audio/audioPane.esm.js +96 -0
  15. package/dist/audio/audioPane.esm.js.map +1 -0
  16. package/dist/classInstancePane.cjs.js +2 -0
  17. package/dist/classInstancePane.cjs.js.map +1 -0
  18. package/dist/classInstancePane.esm.js +50 -0
  19. package/dist/classInstancePane.esm.js.map +1 -0
  20. package/dist/components/header/Header.d.ts +8 -0
  21. package/dist/components/header/Header.d.ts.map +1 -0
  22. package/dist/components/header/index.d.ts +4 -0
  23. package/dist/components/header/index.d.ts.map +1 -0
  24. package/dist/dashboard/basicPreferences.cjs.js +2 -0
  25. package/dist/dashboard/basicPreferences.cjs.js.map +1 -0
  26. package/dist/dashboard/basicPreferences.d.ts +1 -1
  27. package/dist/dashboard/basicPreferences.esm.js +70 -0
  28. package/dist/dashboard/basicPreferences.esm.js.map +1 -0
  29. package/dist/dashboard/dashboardPane.d.ts +1 -1
  30. package/dist/dashboard/homepage.d.ts +1 -1
  31. package/dist/dashboard/ontologyData.cjs.js +37 -0
  32. package/dist/dashboard/ontologyData.cjs.js.map +1 -0
  33. package/dist/dashboard/ontologyData.esm.js +6 -0
  34. package/dist/dashboard/ontologyData.esm.js.map +1 -0
  35. package/dist/dashboard/preferencesFormText.cjs.js +20 -0
  36. package/dist/dashboard/preferencesFormText.cjs.js.map +1 -0
  37. package/dist/dashboard/preferencesFormText.esm.js +6 -0
  38. package/dist/dashboard/preferencesFormText.esm.js.map +1 -0
  39. package/dist/dataContentPane.d.ts +2 -3
  40. package/dist/dataContentPane2.cjs.js +2 -0
  41. package/dist/dataContentPane2.cjs.js.map +1 -0
  42. package/dist/dataContentPane2.esm.js +109 -0
  43. package/dist/dataContentPane2.esm.js.map +1 -0
  44. package/dist/defaultPane.d.ts +2 -3
  45. package/dist/defaultPane2.cjs.js +2 -0
  46. package/dist/defaultPane2.cjs.js.map +1 -0
  47. package/dist/defaultPane2.esm.js +41 -0
  48. package/dist/defaultPane2.esm.js.map +1 -0
  49. package/dist/dev.d.ts +10 -0
  50. package/dist/dev.d.ts.map +1 -0
  51. package/dist/dokieli/dokieliPane.cjs.js +2 -0
  52. package/dist/dokieli/dokieliPane.cjs.js.map +1 -0
  53. package/dist/dokieli/dokieliPane.esm.js +39 -0
  54. package/dist/dokieli/dokieliPane.esm.js.map +1 -0
  55. package/dist/dokieli/{new.js → new.cjs.js} +4 -10
  56. package/dist/dokieli/new.cjs.js.map +1 -0
  57. package/dist/dokieli/new.esm.js +6 -0
  58. package/dist/dokieli/new.esm.js.map +1 -0
  59. package/dist/form/pane.cjs.js +4 -0
  60. package/dist/form/pane.cjs.js.map +1 -0
  61. package/dist/form/pane.d.ts +1 -2
  62. package/dist/form/pane.esm.js +121 -0
  63. package/dist/form/pane.esm.js.map +1 -0
  64. package/dist/home/homePane.cjs.js +2 -0
  65. package/dist/home/homePane.cjs.js.map +1 -0
  66. package/dist/home/homePane.d.ts +1 -1
  67. package/dist/home/homePane.esm.js +35 -0
  68. package/dist/home/homePane.esm.js.map +1 -0
  69. package/dist/humanReadablePane.d.ts +2 -3
  70. package/dist/humanReadablePane2.cjs.js +2 -0
  71. package/dist/humanReadablePane2.cjs.js.map +1 -0
  72. package/dist/humanReadablePane2.esm.js +123 -0
  73. package/dist/humanReadablePane2.esm.js.map +1 -0
  74. package/dist/icons/dashboard.cjs.js +2 -0
  75. package/dist/icons/dashboard.cjs.js.map +1 -0
  76. package/dist/icons/dashboard.esm.js +6 -0
  77. package/dist/icons/dashboard.esm.js.map +1 -0
  78. package/dist/icons/folder.cjs.js +2 -0
  79. package/dist/icons/folder.cjs.js.map +1 -0
  80. package/dist/icons/folder.esm.js +6 -0
  81. package/dist/icons/folder.esm.js.map +1 -0
  82. package/dist/icons/friends.cjs.js +2 -0
  83. package/dist/icons/friends.cjs.js.map +1 -0
  84. package/dist/icons/friends.esm.js +6 -0
  85. package/dist/icons/friends.esm.js.map +1 -0
  86. package/dist/icons/iconHelper.cjs.js +2 -0
  87. package/dist/icons/iconHelper.cjs.js.map +1 -0
  88. package/dist/icons/iconHelper.esm.js +17 -0
  89. package/dist/icons/iconHelper.esm.js.map +1 -0
  90. package/dist/icons/{menu.svg → menu.cjs.js} +3 -2
  91. package/dist/icons/menu.cjs.js.map +1 -0
  92. package/dist/icons/menu.esm.js +6 -0
  93. package/dist/icons/menu.esm.js.map +1 -0
  94. package/dist/icons/person.cjs.js +2 -0
  95. package/dist/icons/person.cjs.js.map +1 -0
  96. package/dist/icons/person.esm.js +6 -0
  97. package/dist/icons/person.esm.js.map +1 -0
  98. package/dist/imagePane.d.ts +2 -3
  99. package/dist/imagePane2.cjs.js +2 -0
  100. package/dist/imagePane2.cjs.js.map +1 -0
  101. package/dist/imagePane2.esm.js +32 -0
  102. package/dist/imagePane2.esm.js.map +1 -0
  103. package/dist/index.cjs.js +2 -0
  104. package/dist/index.cjs.js.map +1 -0
  105. package/dist/index.d.ts +4 -4
  106. package/dist/index.esm.js +26 -0
  107. package/dist/index.esm.js.map +1 -0
  108. package/dist/internal/internalPane.d.ts +1 -2
  109. package/dist/internal/internalPane2.cjs.js +2 -0
  110. package/dist/internal/internalPane2.cjs.js.map +1 -0
  111. package/dist/internal/internalPane2.esm.js +104 -0
  112. package/dist/internal/internalPane2.esm.js.map +1 -0
  113. package/dist/mainPage/footer.cjs.js +2 -0
  114. package/dist/mainPage/footer.cjs.js.map +1 -0
  115. package/dist/mainPage/footer.d.ts +1 -3
  116. package/dist/mainPage/footer.esm.js +18 -0
  117. package/dist/mainPage/footer.esm.js.map +1 -0
  118. package/dist/mainPage/header.cjs.js +2 -0
  119. package/dist/mainPage/header.cjs.js.map +1 -0
  120. package/dist/mainPage/header.d.ts +1 -15
  121. package/dist/mainPage/header.d.ts.map +1 -1
  122. package/dist/mainPage/header.esm.js +24 -0
  123. package/dist/mainPage/header.esm.js.map +1 -0
  124. package/dist/mainPage/index.cjs.js +2 -0
  125. package/dist/mainPage/index.cjs.js.map +1 -0
  126. package/dist/mainPage/index.d.ts +3 -7
  127. package/dist/mainPage/index.d.ts.map +1 -1
  128. package/dist/mainPage/index.esm.js +38 -0
  129. package/dist/mainPage/index.esm.js.map +1 -0
  130. package/dist/mainPage/menu.d.ts +1 -2
  131. package/dist/mainPage/menu2.cjs.js +2 -0
  132. package/dist/mainPage/menu2.cjs.js.map +1 -0
  133. package/dist/mainPage/menu2.esm.js +184 -0
  134. package/dist/mainPage/menu2.esm.js.map +1 -0
  135. package/dist/n3Pane.d.ts +2 -3
  136. package/dist/n3Pane2.cjs.js +3 -0
  137. package/dist/n3Pane2.cjs.js.map +1 -0
  138. package/dist/n3Pane2.esm.js +52 -0
  139. package/dist/n3Pane2.esm.js.map +1 -0
  140. package/dist/outline/context.cjs.js +2 -0
  141. package/dist/outline/context.cjs.js.map +1 -0
  142. package/dist/outline/context.d.ts +3 -3
  143. package/dist/outline/context.esm.js +18 -0
  144. package/dist/outline/context.esm.js.map +1 -0
  145. package/dist/outline/manager2.cjs.js +3 -0
  146. package/dist/outline/manager2.cjs.js.map +1 -0
  147. package/dist/outline/manager2.esm.js +875 -0
  148. package/dist/outline/manager2.esm.js.map +1 -0
  149. package/dist/outline/outlineIcons.cjs.js +2 -0
  150. package/dist/outline/outlineIcons.cjs.js.map +1 -0
  151. package/dist/outline/outlineIcons.esm.js +10 -0
  152. package/dist/outline/outlineIcons.esm.js.map +1 -0
  153. package/dist/outline/propertyViews.cjs.js +2 -0
  154. package/dist/outline/propertyViews.cjs.js.map +1 -0
  155. package/dist/outline/propertyViews.esm.js +19 -0
  156. package/dist/outline/propertyViews.esm.js.map +1 -0
  157. package/dist/outline/queryByExample.cjs.js +2 -0
  158. package/dist/outline/queryByExample.cjs.js.map +1 -0
  159. package/dist/outline/queryByExample.esm.js +25 -0
  160. package/dist/outline/queryByExample.esm.js.map +1 -0
  161. package/dist/outline/userInput.cjs.js +61 -0
  162. package/dist/outline/userInput.cjs.js.map +1 -0
  163. package/dist/outline/userInput.esm.js +784 -0
  164. package/dist/outline/userInput.esm.js.map +1 -0
  165. package/dist/outline/viewAsImage.cjs.js +2 -0
  166. package/dist/outline/viewAsImage.cjs.js.map +1 -0
  167. package/dist/outline/viewAsImage.esm.js +10 -0
  168. package/dist/outline/viewAsImage.esm.js.map +1 -0
  169. package/dist/outline/viewAsMbox.cjs.js +2 -0
  170. package/dist/outline/viewAsMbox.cjs.js.map +1 -0
  171. package/dist/outline/viewAsMbox.esm.js +9 -0
  172. package/dist/outline/viewAsMbox.esm.js.map +1 -0
  173. package/dist/pad/padPane.d.ts +1 -2
  174. package/dist/pad/padPane2.cjs.js +2 -0
  175. package/dist/pad/padPane2.cjs.js.map +1 -0
  176. package/dist/pad/padPane2.esm.js +172 -0
  177. package/dist/pad/padPane2.esm.js.map +1 -0
  178. package/dist/playlist/playlistPane.cjs.js +2 -0
  179. package/dist/playlist/playlistPane.cjs.js.map +1 -0
  180. package/dist/playlist/playlistPane.esm.js +49 -0
  181. package/dist/playlist/playlistPane.esm.js.map +1 -0
  182. package/dist/profileUtils/ownerProfile.cjs.js +2 -0
  183. package/dist/profileUtils/ownerProfile.cjs.js.map +1 -0
  184. package/dist/profileUtils/ownerProfile.d.ts +1 -1
  185. package/dist/profileUtils/ownerProfile.esm.js +50 -0
  186. package/dist/profileUtils/ownerProfile.esm.js.map +1 -0
  187. package/dist/registerPanes.cjs.js +2 -0
  188. package/dist/registerPanes.cjs.js.map +1 -0
  189. package/dist/registerPanes.esm.js +45 -0
  190. package/dist/registerPanes.esm.js.map +1 -0
  191. package/dist/schedule/formsForSchedule.cjs.js +117 -0
  192. package/dist/schedule/formsForSchedule.cjs.js.map +1 -0
  193. package/dist/schedule/formsForSchedule.esm.js +6 -0
  194. package/dist/schedule/formsForSchedule.esm.js.map +1 -0
  195. package/dist/schedule/schedulePane.d.ts +2 -4
  196. package/dist/schedule/schedulePane2.cjs.js +8 -0
  197. package/dist/schedule/schedulePane2.cjs.js.map +1 -0
  198. package/dist/schedule/schedulePane2.esm.js +384 -0
  199. package/dist/schedule/schedulePane2.esm.js.map +1 -0
  200. package/dist/sharing/sharingPane.cjs.js +2 -0
  201. package/dist/sharing/sharingPane.cjs.js.map +1 -0
  202. package/dist/sharing/sharingPane.esm.js +22 -0
  203. package/dist/sharing/sharingPane.esm.js.map +1 -0
  204. package/dist/slideshow/slideshowPane.cjs.js +2 -0
  205. package/dist/slideshow/slideshowPane.cjs.js.map +1 -0
  206. package/dist/slideshow/slideshowPane.esm.js +46 -0
  207. package/dist/slideshow/slideshowPane.esm.js.map +1 -0
  208. package/dist/social/editProfileDetails.cjs.js +2 -0
  209. package/dist/social/editProfileDetails.cjs.js.map +1 -0
  210. package/dist/social/editProfileDetails.d.ts +1 -2
  211. package/dist/social/editProfileDetails.esm.js +10 -0
  212. package/dist/social/editProfileDetails.esm.js.map +1 -0
  213. package/dist/social/icons.cjs.js +82 -0
  214. package/dist/social/icons.cjs.js.map +1 -0
  215. package/dist/social/{icons.js → icons.esm.js} +12 -18
  216. package/dist/social/icons.esm.js.map +1 -0
  217. package/dist/social/socialPane.d.ts +2 -3
  218. package/dist/social/socialPane2.cjs.js +6 -0
  219. package/dist/social/socialPane2.cjs.js.map +1 -0
  220. package/dist/social/socialPane2.esm.js +326 -0
  221. package/dist/social/socialPane2.esm.js.map +1 -0
  222. package/dist/social/socialSections.cjs.js +2 -0
  223. package/dist/social/socialSections.cjs.js.map +1 -0
  224. package/dist/social/socialSections.d.ts +2 -2
  225. package/dist/social/socialSections.esm.js +221 -0
  226. package/dist/social/socialSections.esm.js.map +1 -0
  227. package/dist/social/triage.cjs.js +2 -0
  228. package/dist/social/triage.cjs.js.map +1 -0
  229. package/dist/social/triage.d.ts +2 -2
  230. package/dist/social/triage.esm.js +44 -0
  231. package/dist/social/triage.esm.js.map +1 -0
  232. package/dist/tabbed/tabbedPane.cjs.js +2 -0
  233. package/dist/tabbed/tabbedPane.cjs.js.map +1 -0
  234. package/dist/tabbed/tabbedPane.d.ts +1 -1
  235. package/dist/tabbed/tabbedPane.esm.js +38 -0
  236. package/dist/tabbed/tabbedPane.esm.js.map +1 -0
  237. package/dist/tableViewPane.cjs.js +2 -0
  238. package/dist/tableViewPane.cjs.js.map +1 -0
  239. package/dist/tableViewPane.esm.js +20 -0
  240. package/dist/tableViewPane.esm.js.map +1 -0
  241. package/dist/transaction/pane.cjs.js +8 -0
  242. package/dist/transaction/pane.cjs.js.map +1 -0
  243. package/dist/transaction/pane.esm.js +212 -0
  244. package/dist/transaction/pane.esm.js.map +1 -0
  245. package/dist/transaction/period.cjs.js +4 -0
  246. package/dist/transaction/period.cjs.js.map +1 -0
  247. package/dist/transaction/period.esm.js +126 -0
  248. package/dist/transaction/period.esm.js.map +1 -0
  249. package/dist/trip/tripPane.cjs.js +2 -0
  250. package/dist/trip/tripPane.cjs.js.map +1 -0
  251. package/dist/trip/tripPane.esm.js +85 -0
  252. package/dist/trip/tripPane.esm.js.map +1 -0
  253. package/dist/trustedApplications/trustedApplications.dom.cjs.js +2 -0
  254. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -0
  255. package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
  256. package/dist/trustedApplications/trustedApplications.dom.esm.js +108 -0
  257. package/dist/trustedApplications/trustedApplications.dom.esm.js.map +1 -0
  258. package/dist/trustedApplications/trustedApplications.utils.cjs.js +2 -0
  259. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -0
  260. package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
  261. package/dist/trustedApplications/trustedApplications.utils.esm.js +20 -0
  262. package/dist/trustedApplications/trustedApplications.utils.esm.js.map +1 -0
  263. package/dist/trustedApplications/trustedApplications.view.cjs.js +2 -0
  264. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -0
  265. package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
  266. package/dist/trustedApplications/trustedApplications.view.esm.js +41 -0
  267. package/dist/trustedApplications/trustedApplications.view.esm.js.map +1 -0
  268. package/dist/ui/pane.cjs.js +4 -0
  269. package/dist/ui/pane.cjs.js.map +1 -0
  270. package/dist/ui/pane.esm.js +56 -0
  271. package/dist/ui/pane.esm.js.map +1 -0
  272. package/dist/versionInfo.cjs.js +2 -0
  273. package/dist/versionInfo.cjs.js.map +1 -0
  274. package/dist/versionInfo.esm.js +40 -0
  275. package/dist/versionInfo.esm.js.map +1 -0
  276. package/dist/video/videoPane.cjs.js +2 -0
  277. package/dist/video/videoPane.cjs.js.map +1 -0
  278. package/dist/video/videoPane.esm.js +25 -0
  279. package/dist/video/videoPane.esm.js.map +1 -0
  280. package/package.json +50 -61
  281. package/dist/0314353e28ce6e5539af.svg +0 -9
  282. package/dist/04567ff683933c35c465.png +0 -0
  283. package/dist/10163fd9b5a0e00d63a0.png +0 -0
  284. package/dist/1234dcb2eec2e45f252b.png +0 -0
  285. package/dist/20899934157df4db56cb.png +0 -0
  286. package/dist/33760bf79f097f449da5.png +0 -0
  287. package/dist/4cceba29ab33b1ddd9bb.svg +0 -6
  288. package/dist/578d2b6ed32e7624164e.png +0 -0
  289. package/dist/5f62a5b2b7e99b9640c7.png +0 -0
  290. package/dist/6525766ecd288ec60129.png +0 -0
  291. package/dist/7800be6f6c4b5b0f4f20.png +0 -0
  292. package/dist/7b7538c6f6b317968009.svg +0 -9
  293. package/dist/92d03142abe6efc0b42d.svg +0 -6
  294. package/dist/976473cf5fe24d657d4b.png +0 -0
  295. package/dist/RDFXMLPane.css +0 -70
  296. package/dist/RDFXMLPane.js +0 -100
  297. package/dist/argument/argumentPane.js +0 -60
  298. package/dist/attach/attachPane.js +0 -393
  299. package/dist/audio/audioPane.js +0 -181
  300. package/dist/bda84f59e7216675a208.png +0 -0
  301. package/dist/cd68e8f3990ba8b2139e.png +0 -0
  302. package/dist/classInstancePane.js +0 -91
  303. package/dist/dashboard/basicPreferences.js +0 -147
  304. package/dist/dashboard/dashboardPane.js +0 -73
  305. package/dist/dashboard/homepage.js +0 -42
  306. package/dist/dataContentPane.css +0 -271
  307. package/dist/dataContentPane.js +0 -226
  308. package/dist/defaultPane.css +0 -97
  309. package/dist/defaultPane.js +0 -81
  310. package/dist/dokieli/dokieliPane.js +0 -74
  311. package/dist/e7074a7e2cb69e51cfd3.png +0 -0
  312. package/dist/f3772696fb7ee53c23d8.png +0 -0
  313. package/dist/form/formPane.css +0 -120
  314. package/dist/form/pane.js +0 -250
  315. package/dist/home/homePane.js +0 -74
  316. package/dist/humanReadablePane.css +0 -129
  317. package/dist/humanReadablePane.js +0 -243
  318. package/dist/icons/clock.svg +0 -7
  319. package/dist/icons/comment.svg +0 -6
  320. package/dist/icons/dashboard.svg +0 -9
  321. package/dist/icons/downArrow.svg +0 -6
  322. package/dist/icons/folder.svg +0 -6
  323. package/dist/icons/friends.svg +0 -9
  324. package/dist/icons/help.svg +0 -8
  325. package/dist/icons/iconHelper.js +0 -23
  326. package/dist/icons/person.svg +0 -6
  327. package/dist/icons/personInCircle.svg +0 -8
  328. package/dist/icons/sharing.svg +0 -10
  329. package/dist/icons/signOut.svg +0 -8
  330. package/dist/icons/signUp.svg +0 -9
  331. package/dist/icons/star.svg +0 -3
  332. package/dist/imagePane.css +0 -4
  333. package/dist/imagePane.js +0 -67
  334. package/dist/index.js +0 -123
  335. package/dist/internal/internalPane.css +0 -14
  336. package/dist/internal/internalPane.js +0 -183
  337. package/dist/mainPage/footer.js +0 -29
  338. package/dist/mainPage/header.js +0 -203
  339. package/dist/mainPage/index.js +0 -78
  340. package/dist/mainPage/menu.css +0 -243
  341. package/dist/mainPage/menu.js +0 -449
  342. package/dist/microblogPane/mbStyle.css +0 -267
  343. package/dist/microblogPane/microblogPane.js +0 -1031
  344. package/dist/n3Pane.css +0 -49
  345. package/dist/n3Pane.js +0 -88
  346. package/dist/outline/context.js +0 -21
  347. package/dist/outline/manager.css +0 -78
  348. package/dist/outline/manager.js +0 -2115
  349. package/dist/outline/outlineIcons.js +0 -126
  350. package/dist/outline/propertyViews.js +0 -43
  351. package/dist/outline/queryByExample.js +0 -285
  352. package/dist/outline/userInput.js +0 -1821
  353. package/dist/outline/viewAsImage.js +0 -14
  354. package/dist/outline/viewAsMbox.js +0 -21
  355. package/dist/pad/padPane.css +0 -40
  356. package/dist/pad/padPane.js +0 -421
  357. package/dist/playlist/playlistPane.js +0 -119
  358. package/dist/profileUtils/ownerProfile.js +0 -84
  359. package/dist/registerPanes.js +0 -145
  360. package/dist/schedule/schedulePane.css +0 -294
  361. package/dist/schedule/schedulePane.js +0 -1022
  362. package/dist/sharing/sharingPane.js +0 -48
  363. package/dist/slideshow/slideshowPane.js +0 -79
  364. package/dist/social/editProfileDetails.js +0 -362
  365. package/dist/social/socialPane.css +0 -1464
  366. package/dist/social/socialPane.js +0 -651
  367. package/dist/social/socialSections.js +0 -393
  368. package/dist/social/spinner.js +0 -13
  369. package/dist/social/triage.js +0 -79
  370. package/dist/solid-panes.js +0 -87502
  371. package/dist/solid-panes.js.map +0 -1
  372. package/dist/solid-panes.min.js +0 -3811
  373. package/dist/solid-panes.min.js.map +0 -1
  374. package/dist/styles/tabbedtab.css +0 -1066
  375. package/dist/styles/utilities.css +0 -5
  376. package/dist/tabbed/tabbedPane.js +0 -59
  377. package/dist/tableViewPane.js +0 -56
  378. package/dist/transaction/pane.js +0 -477
  379. package/dist/transaction/period.js +0 -323
  380. package/dist/trip/tripPane.js +0 -174
  381. package/dist/trustedApplications/trustedApplications.dom.js +0 -145
  382. package/dist/trustedApplications/trustedApplications.utils.js +0 -23
  383. package/dist/trustedApplications/trustedApplications.view.js +0 -55
  384. package/dist/ui/pane.js +0 -146
  385. package/dist/versionInfo.js +0 -41
  386. package/dist/video/videoPane.js +0 -42
@@ -1,1821 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.UserInput = UserInput;
7
- var UI = _interopRequireWildcard(require("solid-ui"));
8
- var _solidLogic = require("solid-logic");
9
- var panes = _interopRequireWildcard(require("pane-registry"));
10
- var $rdf = _interopRequireWildcard(require("rdflib"));
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
- /* istanbul ignore file */
13
- // Original author: kennyluck
14
- //
15
- // Kenny's Notes:
16
- /* places to generate SPARQL update: clearInputAndSave() pasteFromClipboard()->insertTermTo();
17
- undetermined statement generated formUndetStat()
18
- ->fillInRequest()
19
- ontological issues
20
- temporarily using the tabont namespace
21
- clipboard: 'predicates' 'objects' 'all'(internal)
22
- request: 'from' 'to' 'message' 'Request'
23
- */
24
-
25
- let UserInputFormula; // Formula to store references of user's work
26
- let TempFormula; // Formula to store incomplete triples (Requests),
27
- // temporarily disjoint with kb to avoid bugs
28
-
29
- function UserInput(outline) {
30
- const myDocument = outline.document; // is this ok?
31
- // UI.log.warn("myDocument when it's set is "+myDocument.location);
32
- this.menuId = 'predicateMenu1';
33
-
34
- /* //namespace information, as a subgraph of the knowledge base, is built in showMenu
35
- this.namespaces={};
36
- for (var name in UI.ns) {
37
- this.namespaces[name] = UI.ns[name]('').uri;
38
- }
39
- var NameSpaces=this.namespaces;
40
- */
41
-
42
- // hq, print and trim functions
43
- const qp = function qp(str) {
44
- console.log(str + '\n');
45
- };
46
-
47
- // var tabont = UI.ns.tabont;
48
- // var foaf = UI.ns.foaf
49
- const rdf = UI.ns.rdf;
50
- // var RDFS = UI.ns.rdfs
51
- // var OWL = UI.ns.owl
52
- // var dc = UI.ns.dc
53
- // var rss = UI.ns.rss
54
- // var contact = UI.ns.contact
55
- // var mo = UI.ns.mo
56
- const bibo = $rdf.Namespace('http://purl.org/ontology/bibo/'); // hql for pubsPane
57
- // var dcterms = $rdf.Namespace('http://purl.org/dc/terms/')
58
- const dcelems = $rdf.Namespace('http://purl.org/dc/elements/1.1/');
59
- let movedArrow = false; // hq
60
-
61
- // var updateService=new updateCenter(kb);
62
-
63
- if (!UserInputFormula) {
64
- UserInputFormula = new $rdf.Formula();
65
- UserInputFormula.superFormula = _solidLogic.store;
66
- // UserInputFormula.registerFormula("Your Work");
67
- }
68
- if (!TempFormula) TempFormula = new $rdf.IndexedFormula();
69
- // Use RDFIndexedFormula so add returns the statement
70
- TempFormula.name = 'TempFormula';
71
- if (!_solidLogic.store.updater) _solidLogic.store.updater = new $rdf.UpdateManager(_solidLogic.store);
72
- return {
73
- // updateService: updateService,
74
-
75
- sparqler: _solidLogic.store.updater,
76
- lastModified: null,
77
- // the last <input> being modified, .isNew indicates whether it's a new input
78
- lastModifiedStat: null,
79
- // the last statement being modified
80
- statIsInverse: false,
81
- // whether the statement is an inverse
82
-
83
- /**
84
- * Triggering Events: event entry points, should be called only from outline.js but not anywhere else
85
- * in userinput.js, should be as short as possible, function names to be discussed
86
- */
87
-
88
- // Called when the blue cross under the default pane is clicked.
89
- // Add a new row to a property list ( P and O)
90
- addNewPredicateObject: function addNewPredicateObject(e) {
91
- if (UI.utils.getTarget(e).className !== 'bottom-border-active') return;
92
- const This = outline.UserInput;
93
- const target = UI.utils.getTarget(e);
94
-
95
- // UI.log.warn(ancestor(target,'TABLE').textContent);
96
- const insertTr = myDocument.createElement('tr');
97
- UI.utils.ancestor(target, 'DIV').insertBefore(insertTr, UI.utils.ancestor(target, 'TR'));
98
- const tempTr = myDocument.createElement('tr');
99
- const reqTerm1 = This.generateRequest('(TBD)', tempTr, true);
100
- insertTr.appendChild(tempTr.firstChild);
101
- const reqTerm2 = This.generateRequest('(Enter text or drag an object onto this field)', tempTr, false);
102
- insertTr.appendChild(tempTr.firstChild);
103
- // there should be an elegant way of doing this
104
-
105
- // Take the why of the last TR and write to it.
106
- if (UI.utils.ancestor(target, 'TR').previousSibling &&
107
- // there is a previous predicate/object line
108
- UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement) {
109
- const preStat = UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement;
110
- // This should always(?) input a non-inverse statement
111
- This.formUndetStat(insertTr, preStat.subject, reqTerm1, reqTerm2, preStat.why, false);
112
- } else {
113
- // no previous row: write to the document defining the subject
114
- const subject = UI.utils.getAbout(_solidLogic.store, UI.utils.ancestor(target.parentNode.parentNode, 'TD'));
115
- const doc = _solidLogic.store.sym($rdf.Util.uri.docpart(subject.uri));
116
- This.formUndetStat(insertTr, subject, reqTerm1, reqTerm2, doc, false);
117
- }
118
- outline.walk('moveTo', insertTr.firstChild);
119
- UI.log.info('addNewPredicateObject: selection = ' + outline.getSelection().map(function (item) {
120
- return item.textContent;
121
- }).join(', '));
122
- this.startFillInText(outline.getSelection()[0]);
123
- },
124
- // Called when a blue cross on a predicate is clicked
125
- // tr.AJAR_inverse stores whether the clicked predicate is an inverse one
126
- // tr.AJAR_statement (an incomplete statement in TempFormula) stores the destination(why), now
127
- // determined by the preceding one (is this good?)
128
- addNewObject: function addNewObject(e) {
129
- const predicateTd = UI.utils.getTarget(e).parentNode.parentNode;
130
- // var predicateTerm = UI.utils.getAbout(kb, predicateTd)
131
- const isInverse = predicateTd.parentNode.AJAR_inverse;
132
- // var titleTerm=UI.utils.getAbout(kb,UI.utils.ancestor(predicateTd.parentNode,'TD'));
133
- // set pseudo lastModifiedStat here
134
- this.lastModifiedStat = predicateTd.parentNode.AJAR_statement;
135
- const insertTr = this.appendToPredicate(predicateTd);
136
- const reqTerm = this.generateRequest(' (Error) ', insertTr, false);
137
- const preStat = insertTr.previousSibling.AJAR_statement;
138
- if (!isInverse) {
139
- this.formUndetStat(insertTr, preStat.subject, preStat.predicate, reqTerm, preStat.why, false);
140
- } else {
141
- this.formUndetStat(insertTr, reqTerm, preStat.predicate, preStat.object, preStat.why, true);
142
- }
143
- outline.walk('moveTo', insertTr.lastChild);
144
- this.startFillInText(insertTr.lastChild);
145
- // this.statIsInverse=false;
146
- },
147
- // Called when delete is pressed
148
- Delete: function Delete(selectedTd) {
149
- this.deleteTriple(selectedTd, false);
150
- },
151
- // Called when enter is pressed
152
- Enter: function Enter(selectedTd) {
153
- this.literalModification(selectedTd);
154
- },
155
- // Called when a selected cell is clicked again
156
- Click: function Click(e) {
157
- const target = UI.utils.getTarget(e);
158
- if (UI.utils.getTerm(target).termType !== 'Literal') return;
159
- this.literalModification(target);
160
- // this prevents the generated inputbox to be clicked again
161
- e.preventDefault();
162
- e.stopPropagation();
163
- },
164
- // Called when paste is called (Ctrl+v)
165
- pasteFromClipboard: function pasteFromClipboard(address, selectedTd) {
166
- function termFrom(fromCode) {
167
- const term = outline.clipboard[fromCode].shift();
168
- if (term === null) {
169
- UI.log.warn('no more element in clipboard!');
170
- return;
171
- }
172
- switch (fromCode) {
173
- case 'predicates':
174
- case 'objects':
175
- {
176
- const allArray = outline.clipboard.all;
177
- for (let i = 0; true; i++) {
178
- if (term.sameTerm(allArray[i])) {
179
- allArray.splice(i, 1);
180
- break;
181
- }
182
- }
183
- break;
184
- }
185
- case 'all':
186
- throw new Error('hostorical code not understood - what is theCollection?');
187
- /*
188
- var isObject = term.sameTerm(theCollection('objects').elements[0])
189
- isObject ? outline.clipboard.objecs.shift() : outline.clipboard.predicates.shift() // drop the corresponding term
190
- return [term, isObject]
191
- break
192
- */
193
- }
194
- return term;
195
- }
196
- let term;
197
- switch (selectedTd.className) {
198
- case 'undetermined selected':
199
- term = selectedTd.nextSibling ? termFrom('predicates') : termFrom('objects');
200
- if (!term) return;
201
- break;
202
- case 'pred selected':
203
- // paste objects into this predicate
204
- term = termFrom('objects');
205
- if (!term) return;
206
- break;
207
- case 'selected':
208
- {
209
- // header <TD>, undetermined generated
210
- const returnArray = termFrom('all');
211
- if (!returnArray) return;
212
- term = returnArray[0];
213
- this.insertTermTo(selectedTd, term, returnArray[1]);
214
- return;
215
- }
216
- }
217
- this.insertTermTo(selectedTd, term);
218
- },
219
- /**
220
- * Intermediate Processing:
221
- */
222
-
223
- // a general entry point for any event except Click&Enter(goes to literalModification)
224
- // do a little inference to pick the right input box
225
- startFillInText: function startFillInText(selectedTd) {
226
- switch (this.whatSortOfEditCell(selectedTd)) {
227
- case 'DatatypeProperty-like':
228
- // this.clearMenu();
229
- // selectedTd.className='';
230
- UI.utils.emptyNode(selectedTd);
231
- this.lastModified = this.createInputBoxIn(selectedTd, ' (Please Input) ');
232
- this.lastModified.isNew = false;
233
- this.lastModified.select();
234
- break;
235
- case 'predicate':
236
- // the goal is to bring back all the menus (with autocomplete functionality
237
- // this.performAutoCompleteEdit(selectedTd,['PredicateAutoComplete',
238
- // this.choiceQuery('SuggestPredicateByDomain')]);
239
- this.performAutoCompleteEdit(selectedTd, 'PredicateAutoComplete');
240
- break;
241
- case 'ObjectProperty-like':
242
- case 'no-idea':
243
- // menu should be either function that
244
- this.performAutoCompleteEdit(selectedTd, 'GeneralAutoComplete');
245
-
246
- /*
247
- //<code time="original">
248
- emptyNode(selectedTd);
249
- this.lastModified=this.createInputBoxIn(selectedTd,"");
250
- this.lastModified.select();
251
- this.lastModified.addEventListener('keypress',this.AutoComplete,false);
252
- //this pops up the autocomplete menu
253
- this.AutoComplete(1);
254
- //</code>
255
- */
256
- }
257
- },
258
- literalModification: function literalModification(selectedTd) {
259
- UI.log.debug('entering literal Modification with ' + selectedTd + selectedTd.textContent);
260
- // var This=outline.UserInput;
261
- if (selectedTd.className.indexOf(' pendingedit') !== -1) {
262
- UI.log.warn('The node you attempted to edit has a request still pending.\n' + 'Please wait for the request to finish (the text will turn black)\n' + 'before editing this node again.');
263
- return true;
264
- }
265
- const target = selectedTd;
266
- const about = this.getStatementAbout(target); // timbl - to avoid alert from random clicks
267
- if (!about) return;
268
- let obj;
269
- let trNode;
270
- try {
271
- obj = UI.utils.getTerm(target);
272
- trNode = UI.utils.ancestor(target, 'TR');
273
- } catch (e) {
274
- UI.log.warn('userinput.js: ' + e + UI.utils.getAbout(_solidLogic.store, selectedTd));
275
- UI.log.error(target + ' getStatement Error:' + e);
276
- }
277
- let tdNode;
278
- try {
279
- tdNode = trNode.lastChild;
280
- } catch (e) {
281
- UI.log.error(e + '@' + target);
282
- }
283
- // seems to be a event handling problem of firefox3
284
- /*
285
- if (e.type!='keypress'&&(selectedTd.className=='undetermined selected'||selectedTd.className=='undetermined')){
286
- this.Refill(e,selectedTd);
287
- return;
288
- }
289
- */
290
- // ignore clicking trNode.firstChild (be careful for <div> or <span>)
291
- // if (e.type!='keypress'&&target!=tdNode && UI.utils.ancestor(target,'TD')!=tdNode) return;
292
-
293
- if (obj.termType === 'Literal') {
294
- tdNode.removeChild(tdNode.firstChild); // remove the text
295
-
296
- if (obj.value.match('\n')) {
297
- // match a line feed and require <TEXTAREA>
298
- const textBox = myDocument.createElement('textarea');
299
- textBox.appendChild(myDocument.createTextNode(obj.value));
300
- textBox.setAttribute('rows', (obj.value.match(/\n/g).length + 1).toString());
301
- // g is for global(??)
302
- textBox.setAttribute('cols', '100'); // should be the size of <TD>
303
- textBox.setAttribute('class', 'textinput');
304
- tdNode.appendChild(textBox);
305
- this.lastModified = textBox;
306
- } else {
307
- this.lastModified = this.createInputBoxIn(tdNode, obj.value);
308
- }
309
- this.lastModified.isNew = false;
310
- // Kenny: What should be expected after you click a editable text element?
311
- // Choice 1
312
- this.lastModified.select();
313
- // Choice 2 - direct the key cursor to where you click (failed attempt)
314
- // --------------------------------------------------------------------------
315
- // duplicate the event so user can edit without clicking twice
316
- // var e2=myDocument.createEvent("MouseEvents");
317
- // e2.initMouseEvent("click",true,true,window,0,0,0,0,0,false,false,false,false,0,null);
318
- // inputBox.dispatchEvent(e2);
319
- // ---------------------------------------------------------------------------
320
- }
321
- return true; // this is not a valid modification
322
- },
323
- /**
324
- * UIs: input event handlers, menu generation
325
- */
326
- performAutoCompleteEdit: function performAutoCompleteEdit(selectedTd, menu) {
327
- UI.utils.emptyNode(selectedTd);
328
- qp('perform AutoCompleteEdit. THIS IS=' + this);
329
- this.lastModified = this.createInputBoxIn(selectedTd, '');
330
- this.lastModified.select();
331
- this.lastModified.addEventListener('keypress', this.getAutoCompleteHandler(menu), false);
332
- /* keypress!?
333
- This is what I hate about UI programming.
334
- I shall write something about this but not now.
335
- */
336
- // this pops up the autocomplete menu
337
- // Pops up the menu even though no keypress has occurred
338
- // 1 is a dummy variable for the "enterEvent"
339
- this.getAutoCompleteHandler(menu)(1);
340
- },
341
- backOut: function backOut() {
342
- this.deleteTriple(this.lastModified.parentNode, true);
343
- this.lastModified = null;
344
- },
345
- clearMenu: function clearMenu() {
346
- const menu = myDocument.getElementById(this.menuID);
347
- if (menu) {
348
- menu.parentNode.removeChild(menu);
349
- // emptyNode(menu);
350
- }
351
- },
352
- /* goes here when either this is a literal or escape from menu and then input text */
353
- clearInputAndSave: function clearInputAndSave(e) {
354
- let obj;
355
- if (!this.lastModified) return;
356
- if (!this.lastModified.isNew) {
357
- try {
358
- obj = this.getStatementAbout(this.lastModified).object;
359
- } catch (e) {
360
- return;
361
- }
362
- }
363
- let s = this.lastModifiedStat; // when 'isNew' this is set at addNewObject()
364
-
365
- let defaultpropview;
366
- let trNode;
367
- let reqTerm;
368
- let preStat;
369
- if (this.lastModified.value !== this.lastModified.defaultValue) {
370
- let trCache;
371
- if (this.lastModified.value === '') {
372
- // ToDo: remove this
373
- this.lastModified.value = this.lastModified.defaultValue;
374
- this.clearInputAndSave();
375
- return;
376
- } else if (this.lastModified.isNew) {
377
- s = new $rdf.Statement(s.subject, s.predicate, _solidLogic.store.literal(this.lastModified.value), s.why);
378
- // TODO: DEFINE ERROR CALLBACK
379
- defaultpropview = this.views.defaults[s.predicate.uri];
380
- trCache = UI.utils.ancestor(this.lastModified, 'TR');
381
- try {
382
- _solidLogic.store.updater.update([], [s], function (uri, success, errorBody) {
383
- if (!success) {
384
- UI.log.error('Error occurs while inserting ' + s + '\n\n' + errorBody + '\n');
385
- // UI.log.warn("Error occurs while inserting "+s+'\n\n'+errorBody);
386
- outline.UserInput.deleteTriple(trCache.lastChild, true);
387
- }
388
- });
389
- } catch (e) {
390
- UI.log.error('Error inserting fact ' + s + ':\n\t' + e + '\n');
391
- return;
392
- }
393
- s = _solidLogic.store.add(s.subject, s.predicate, _solidLogic.store.literal(this.lastModified.value), s.why);
394
- } else {
395
- if (this.statIsInverse) {
396
- UI.log.error('Invalid Input: a literal can\'t be a subject in RDF/XML');
397
- this.backOut();
398
- return;
399
- }
400
- let s1, s2, s3;
401
- switch (obj.termType) {
402
- case 'Literal':
403
- {
404
- // generate path and nailing from current values
405
-
406
- // TODO: DEFINE ERROR CALLBACK
407
- const valueCache = this.lastModified.value;
408
- trCache = UI.utils.ancestor(this.lastModified, 'TR');
409
- const oldValue = this.lastModified.defaultValue;
410
- s2 = $rdf.st(s.subject, s.predicate, _solidLogic.store.literal(this.lastModified.value), s.why);
411
- try {
412
- _solidLogic.store.updater.update([s], [s2], function (uri, success, errorBody) {
413
- if (success) {
414
- obj.value = valueCache;
415
- } else {
416
- UI.log.warn('Error occurs while editing ' + s + '\n\n' + errorBody);
417
- trCache.lastChild.textContent = oldValue;
418
- }
419
- trCache.lastChild.className = trCache.lastChild.className.replace(/ pendingedit/g, '');
420
- });
421
- } catch (e) {
422
- UI.log.warn('Error occurs while editing ' + s + ':\n\t' + e);
423
- return;
424
- }
425
- // obj.value=this.lastModified.value;
426
- // UserInputFormula.statements.push(s);
427
- break;
428
- }
429
- case 'BlankNode':
430
- {
431
- // a request refill with text
432
- // var newStat
433
- const textTerm = _solidLogic.store.literal(this.lastModified.value, '');
434
- // <Feature about="labelChoice">
435
- if (s.predicate.termType === 'Collection') {
436
- // case: add triple ????????? Weird - tbl
437
- const selectedPredicate = s.predicate.elements[0]; // @@ TBL elements is a list on the predicate??
438
- if (_solidLogic.store.any(undefined, selectedPredicate, textTerm)) {
439
- if (!e) {
440
- // keyboard
441
- const tdNode = this.lastModified.parentNode;
442
- e = {};
443
- e.pageX = UI.utils.findPos(tdNode)[0];
444
- e.pageY = UI.utils.findPos(tdNode)[1] + tdNode.clientHeight;
445
- }
446
- this.showMenu(e, 'DidYouMeanDialog', undefined, {
447
- dialogTerm: _solidLogic.store.any(undefined, selectedPredicate, textTerm),
448
- bnodeTerm: s.subject
449
- });
450
- } else {
451
- s1 = UI.utils.ancestor(UI.utils.ancestor(this.lastModified, 'TR').parentNode, 'TR').AJAR_statement;
452
- s2 = $rdf.st(s.subject, selectedPredicate, textTerm, s.why);
453
- const type = _solidLogic.store.the(s.subject, rdf('type'));
454
- s3 = _solidLogic.store.anyStatementMatching(s.subject, rdf('type'), type, s.why);
455
- // TODO: DEFINE ERROR CALLBACK
456
- // because the table is repainted, so...
457
- trCache = UI.utils.ancestor(UI.utils.ancestor(this.lastModified, 'TR'), 'TD').parentNode;
458
- try {
459
- _solidLogic.store.updater.update([], [s1, s2, s3], function (uri, success, errorBody) {
460
- if (!success) {
461
- console.log('Error occurs while editing ' + s1 + '\n\n' + errorBody);
462
- outline.UserInput.deleteTriple(trCache.lastChild, true); // @@@@ This
463
- }
464
- });
465
- } catch (e) {
466
- console.log('Error occurs while editing ' + s1 + ':\n\t' + e);
467
- return;
468
- }
469
- _solidLogic.store.remove(s);
470
- _solidLogic.store.add(s.subject, selectedPredicate, textTerm, s.why); // was: newStat =
471
- // a subtle bug occurs here, if foaf:nick hasn't been dereferneced,
472
- // this add will cause a repainting
473
- }
474
- const enclosingTd = UI.utils.ancestor(this.lastModified.parentNode.parentNode, 'TD');
475
- const defaultPane = panes.byName('default'); // @@ check
476
- outline.outlineExpand(enclosingTd, s.subject, {
477
- pane: defaultPane,
478
- already: true
479
- });
480
- outline.walk('right', outline.focusTd);
481
- // </Feature>
482
- } else {
483
- this.fillInRequest('object', this.lastModified.parentNode, _solidLogic.store.literal(this.lastModified.value));
484
- return; // The new Td is already generated by fillInRequest, so it's done.
485
- }
486
- break;
487
- }
488
- }
489
- }
490
- } else if (this.lastModified.isNew) {
491
- // generate 'Request', there is no way you can input ' (Please Input) '
492
- trNode = UI.utils.ancestor(this.lastModified, 'TR');
493
- reqTerm = this.generateRequest('(To be determined. Re-type of drag an object onto this field)');
494
- preStat = trNode.previousSibling.AJAR_statement; // the statement of the same predicate
495
- this.formUndetStat(trNode, preStat.subject, preStat.predicate, reqTerm, preStat.why, false);
496
- // this why being the same as the previous statement
497
- this.lastModified = null;
498
-
499
- // UI.log.warn("test .isNew)");
500
- return;
501
- } else if (s.predicate.termType === 'Collection') {
502
- _solidLogic.store.removeMany(s.subject);
503
- const upperTr = UI.utils.ancestor(UI.utils.ancestor(this.lastModified, 'TR').parentNode, 'TR');
504
- preStat = upperTr.AJAR_statement;
505
- reqTerm = this.generateRequest('(To be determined. Re-type of drag an object onto this field)');
506
- this.formUndetStat(upperTr, preStat.subject, preStat.predicate, reqTerm, preStat.why, false);
507
- outline.replaceTD(outline.outlineObjectTD(reqTerm, defaultpropview), upperTr.lastChild);
508
- this.lastModified = null;
509
- return;
510
- } else if (this.statIsInverse) {
511
- /*
512
- if ((s.object.termType === 'BlankNode' && !this.statIsInverse) ||
513
- s.subject.termType === 'BlankNode' && this.statIsInverse) {
514
- this.backOut()
515
- return
516
- */
517
- if (s.subject.termType === 'BlankNode') {
518
- this.backOut();
519
- return;
520
- }
521
- } else {
522
- if (s.object.termType === 'BlankNode') {
523
- this.backOut();
524
- return;
525
- }
526
- }
527
- // case modified - literal modification only(for now).
528
- trNode = UI.utils.ancestor(this.lastModified, 'TR');
529
- // var defaultpropview = this.views.defaults[s.predicate.uri]
530
-
531
- if (!this.statIsInverse) {
532
- // this is for an old feature
533
- // outline.replaceTD(outline.outlineObjectTD(s.object, defaultpropview),trNode.lastChild);
534
- outline.replaceTD(outline.outlineObjectTD(_solidLogic.store.literal(this.lastModified.value), defaultpropview), trNode.lastChild);
535
- } else {
536
- outline.replaceTD(outline.outlineObjectTD(s.subject, defaultpropview), trNode.lastChild);
537
- }
538
- if (this.lastModified.value !== this.lastModified.defaultValue) {
539
- trNode.lastChild.className += ' pendingedit';
540
- }
541
- // trNode.AJAR_statement=s;//you don't have to set AJAR_inverse because it's not changed
542
- // This is going to be painful when predicate-edit allowed
543
- this.lastModified = null;
544
- },
545
- /* deletes the triple corresponding to selectedTd, remove that Td. */
546
- deleteTriple: function deleteTriple(selectedTd, isBackOut) {
547
- // ToDo: complete deletion of a node
548
- UI.log.debug('deleteTriple entered');
549
-
550
- // allow a pending node to be deleted if it's a backout sent by SPARQL update callback
551
- if (!isBackOut && selectedTd.className.indexOf(' pendingedit') !== -1) {
552
- console.log('The node you attempted to edit has a request still pending.\n' + 'Please wait for the request to finish (the text will turn black)\n' + 'before editing this node again.');
553
- outline.walk('up');
554
- return;
555
- }
556
- // var afterTr
557
- const s = this.getStatementAbout(selectedTd);
558
- if (!isBackOut && !_solidLogic.store.whether(s.object, rdf('type'), UI.ns.link('Request')) &&
559
- // Better to check whether provenance is internal?
560
- !_solidLogic.store.whether(s.predicate, rdf('type'), UI.ns.link('Request')) && !_solidLogic.store.whether(s.subject, rdf('type'), UI.ns.link('Request'))) {
561
- UI.log.debug('about to send SPARQLUpdate');
562
- try {
563
- _solidLogic.store.updater.update([s], [], function (uri, success, errorBody) {
564
- if (success) {
565
- removefromview();
566
- } else {
567
- // removedTr.AJAR_statement=kb.add(s.subject,s.predicate,s.object,s.why);
568
- console.log('Error occurs while deleting ' + s + '\n\n' + errorBody);
569
- selectedTd.className = selectedTd.className.replace(/ pendingedit/g, '');
570
- }
571
- });
572
- selectedTd.className += ' pendingedit';
573
- } catch (e) {
574
- UI.log.error(e);
575
- UI.log.warn('Error deleting statement ' + s + ':\n\t' + e);
576
- return;
577
- }
578
- UI.log.debug('SPARQLUpdate sent');
579
- } else {
580
- // removal of an undetermined statement associated with pending TRs
581
- // TempFormula.remove(s);
582
- }
583
- UI.log.debug('about to remove ' + s);
584
- UI.log.debug('removed');
585
- outline.walk('up');
586
- const removedTr = selectedTd.parentNode;
587
- // afterTr = removedTr.nextSibling
588
- function removefromview() {
589
- let trIterator;
590
- for (trIterator = removedTr; trIterator.childNodes.length === 1; trIterator = trIterator.previousSibling);
591
- let predicateTd;
592
- if (trIterator === removedTr) {
593
- const theNext = trIterator.nextSibling;
594
- if (theNext.nextSibling && theNext.childNodes.length === 1) {
595
- predicateTd = trIterator.firstChild;
596
- predicateTd.setAttribute('rowspan', parseInt(predicateTd.getAttribute('rowspan')) - 1);
597
- theNext.insertBefore(trIterator.firstChild, theNext.firstChild);
598
- }
599
- removedTr.parentNode.removeChild(removedTr);
600
- } else {
601
- // !DisplayOptions["display:block on"].enabled){
602
- predicateTd = trIterator.firstChild;
603
- predicateTd.setAttribute('rowspan', parseInt(predicateTd.getAttribute('rowspan')) - 1);
604
- removedTr.parentNode.removeChild(removedTr);
605
- }
606
- }
607
- if (isBackOut) removefromview();
608
- },
609
- /* clipboard principle: copy wildly, paste carefully
610
- ToDoS:
611
- 1. register Subcollection?
612
- 2. copy from more than one selectedTd: 1.sequece 2.collection
613
- 3. make a clipboard class?
614
- */
615
- clipboardInit: function clipboardInit() {
616
- outline.clipboard = {};
617
- outline.clipboard.objects = [];
618
- outline.clipboard.predicates = [];
619
- outline.clipboard.all = [];
620
- },
621
- copyToClipboard: function copyToClipboard(address, selectedTd) {
622
- /*
623
- var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
624
- if (!clip) return false;
625
- var clipid = Components.interfaces.nsIClipboard;
626
- var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
627
- if (!trans) return false;
628
- var copytext = "Tabulator!!";
629
- var str = Components.classes["@mozilla.org/supports-string;1"].
630
- createInstance(Components.interfaces.nsISupportsString);
631
- if (!str) return false;
632
- str.data = copytext;
633
- trans.addDataFlavor("text/x-moz-url");
634
- trans.setTransferData("text/x-mox-url", str, copytext.length * 2);
635
- clip.setData(trans, null, clipid.kGlobalClipboard);
636
- */
637
-
638
- const term = UI.utils.getTerm(selectedTd);
639
- switch (selectedTd.className) {
640
- case 'selected': // table header
641
- case 'obj selected':
642
- // var objects = outline.clipboard.objects
643
- outline.clipboard.objects.unshift(term);
644
- break;
645
- case 'pred selected':
646
- case 'pred internal selected':
647
- outline.clipboard.predicates.unshift(term);
648
- }
649
- outline.clipboard.all.unshift(term);
650
- },
651
- insertTermTo: function insertTermTo(selectedTd, term, isObject) {
652
- let defaultpropview;
653
- let preStat;
654
- switch (selectedTd.className) {
655
- case 'undetermined selected':
656
- defaultpropview = this.views.defaults[selectedTd.parentNode.AJAR_statement.predicate.uri];
657
- this.fillInRequest(selectedTd.nextSibling ? 'predicate' : 'object', selectedTd, term);
658
- break;
659
- case 'pred selected':
660
- {
661
- // paste objects into this predicate
662
- const insertTr = this.appendToPredicate(selectedTd);
663
- preStat = selectedTd.parentNode.AJAR_statement;
664
- defaultpropview = this.views.defaults[preStat.predicate.uri];
665
- insertTr.appendChild(outline.outlineObjectTD(term, defaultpropview));
666
- // modify store and update here
667
- const isInverse = selectedTd.parentNode.AJAR_inverse;
668
- if (!isInverse) {
669
- insertTr.AJAR_statement = _solidLogic.store.add(preStat.subject, preStat.predicate, term, preStat.why);
670
- } else {
671
- insertTr.AJAR_statemnet = _solidLogic.store.add(term, preStat.predicate, preStat.object, preStat.why);
672
- }
673
- try {
674
- _solidLogic.store.updater.update([], [insertTr.AJAR_statement], function (uri, success, errorBody) {
675
- if (!success) {
676
- UI.log.error('userinput.js (pred selected): Fail trying to insert statement ' + insertTr.AJAR_statement + ': ' + errorBody);
677
- }
678
- });
679
- } catch (e) {
680
- UI.log.error('Exception trying to insert statement ' + insertTr.AJAR_statement + ': ' + UI.utils.stackString(e));
681
- return;
682
- }
683
- insertTr.AJAR_inverse = isInverse;
684
- UserInputFormula.statements.push(insertTr.AJAR_statement);
685
- break;
686
- }
687
- case 'selected':
688
- {
689
- // header <TD>, undetermined generated
690
- const paneDiv = UI.utils.ancestor(selectedTd, 'TABLE').lastChild;
691
- const newTr = paneDiv.insertBefore(myDocument.createElement('tr'), paneDiv.lastChild);
692
- // var titleTerm=UI.utils.getAbout(kb,UI.utils.ancestor(newTr,'TD'));
693
- preStat = newTr.previousSibling.AJAR_statement;
694
- if (typeof isObject === 'undefined') isObject = true;
695
- if (isObject) {
696
- // object inserted
697
- this.formUndetStat(newTr, preStat.subject, this.generateRequest('(TBD)', newTr, true), term, preStat.why, false);
698
- // defaultpropview temporaily not dealt with
699
- newTr.appendChild(outline.outlineObjectTD(term));
700
- outline.walk('moveTo', newTr.firstChild);
701
- this.startFillInText(newTr.firstChild);
702
- } else {
703
- // predicate inserted
704
- // existing predicate not expected
705
- const reqTerm = this.generateRequest('(To be determined. Re-type of drag an object onto this field)', newTr);
706
- this.formUndetStat(newTr, preStat.subject, term, reqTerm, preStat.why, false);
707
- newTr.insertBefore(outline.outlinePredicateTD(term, newTr, false, false), newTr.firstChild);
708
- outline.walk('moveTo', newTr.lastChild);
709
- this.startFillInText(newTr.lastChild);
710
- }
711
- break;
712
- }
713
- }
714
- },
715
- Refill: function Refill(e, selectedTd) {
716
- UI.log.info('Refill' + selectedTd.textContent);
717
- const isPredicate = selectedTd.nextSibling;
718
- let predicateQuery;
719
- if (isPredicate) {
720
- // predicateTd
721
- let subject;
722
- let subjectClass;
723
- let sparqlText;
724
- if (selectedTd.nextSibling.className === 'undetermined') {
725
- /* Make set of proprties to propose for a predicate.
726
- The naive approach is to take those which have a class
727
- of the subject as their domain. But in fact we must offer anything which
728
- is not explicitly excluded, by having a domain disjointWith a
729
- class of the subject. */
730
-
731
- /* SELECT ?pred
732
- WHERE{
733
- ?pred a rdf:Property.
734
- ?pred rdfs:domain subjectClass.
735
- }
736
- */
737
- /* SELECT ?pred ?class
738
- WHERE{
739
- ?pred a rdf:Property.
740
- subjectClass owl:subClassOf ?class.
741
- ?pred rdfs:domain ?class.
742
- }
743
- */
744
- /* SELECT ?pred
745
- WHERE{
746
- subject a ?subjectClass.
747
- ?pred rdfs:domain ?subjectClass.
748
- }
749
- */
750
- subject = UI.utils.getAbout(_solidLogic.store, UI.utils.ancestor(selectedTd, 'TABLE').parentNode);
751
- subjectClass = _solidLogic.store.any(subject, rdf('type'));
752
- sparqlText = [];
753
- const endl = '.\n';
754
- sparqlText[0] = 'SELECT ?pred WHERE{\n?pred ' + rdf('type') + rdf('Property') + '.\n' + '?pred ' + UI.ns.rdfs('domain') + subjectClass + '.}'; // \n is required? SPARQL parser bug?
755
- sparqlText[1] = 'SELECT ?pred ?class\nWHERE{\n' + '?pred ' + rdf('type') + rdf('Property') + '.\n' + subjectClass + UI.ns.rdfs('subClassOf') + ' ?class.\n' + '?pred ' + UI.ns.rdfs('domain') + ' ?class.\n}';
756
- sparqlText[2] = 'SELECT ?pred WHERE{\n' + subject + rdf('type') + _solidLogic.store.variable('subjectClass') + endl + _solidLogic.store.variable('pred') + UI.ns.rdfs('domain') + _solidLogic.store.variable('subjectClass') + endl + '}';
757
- predicateQuery = sparqlText.map($rdf.SPARQLToQuery);
758
- } else {
759
- // ------selector
760
- /* SELECT ?pred
761
- WHERE{
762
- ?pred a rdf:Property.
763
- ?pred rdfs:domain subjectClass.
764
- ?pred rdfs:range objectClass.
765
- }
766
- */
767
- // Candidate
768
- /* SELECT ?pred
769
- WHERE{
770
- subject a ?subjectClass.
771
- object a ?objectClass.
772
- ?pred rdfs:domain ?subjectClass.
773
- ?pred rdfs:range ?objectClass.
774
- */
775
- subject = UI.utils.getAbout(_solidLogic.store, UI.utils.ancestor(selectedTd, 'TABLE').parentNode);
776
- subjectClass = _solidLogic.store.any(subject, rdf('type'));
777
- const object = selectedTd.parentNode.AJAR_statement.object;
778
- // var objectClass = (object.termType === 'Literal') ? UI.ns.rdfs('Literal') : kb.any(object, rdf('type'))
779
- // var sparqlText="SELECT ?pred WHERE{\n?pred "+rdf('type')+rdf('Property')+".\n"+
780
- // "?pred "+UI.ns.rdfs('domain')+subjectClass+".\n"+
781
- // "?pred "+UI.ns.rdfs('range')+objectClass+".\n}"; // \n is required? SPARQL parser bug?
782
- sparqlText = 'SELECT ?pred WHERE{' + subject + rdf('type') + '?subjectClass' + '.\n' + object + rdf('type') + '?objectClass' + '.\n' + '?pred ' + UI.ns.rdfs('domain') + '?subjectClass' + '.\n' + '?pred ' + UI.ns.rdfs('range') + '?objectClass' + '.\n}'; // \n is required? SPARQL parser bug?
783
- predicateQuery = $rdf.SPARQLToQuery(sparqlText);
784
- }
785
-
786
- // -------presenter
787
- // ToDo: how to sort selected predicates?
788
- this.showMenu(e, 'GeneralPredicateChoice', predicateQuery, {
789
- isPredicate,
790
- selectedTd
791
- });
792
- } else {
793
- // objectTd
794
- const predicateTerm = selectedTd.parentNode.AJAR_statement.predicate;
795
- if (_solidLogic.store.whether(predicateTerm, rdf('type'), UI.ns.owl('DatatypeProperty')) || predicateTerm.termType === 'Collection' || _solidLogic.store.whether(predicateTerm, UI.ns.rdfs('range'), UI.ns.rdfs('Literal'))) {
796
- selectedTd.className = '';
797
- UI.utils.emptyNode(selectedTd);
798
- this.lastModified = this.createInputBoxIn(selectedTd, ' (Please Input) ');
799
- this.lastModified.isNew = false;
800
- this.lastModified.select();
801
- }
802
-
803
- // show menu for rdf:type
804
- if (selectedTd.parentNode.AJAR_statement.predicate.sameTerm(rdf('type'))) {
805
- const sparqlText = 'SELECT ?class WHERE{?class ' + rdf('type') + UI.ns.rdfs('Class') + '.}';
806
- // I should just use kb.each
807
- const classQuery = $rdf.SPARQLToQuery(sparqlText);
808
- this.showMenu(e, 'TypeChoice', classQuery, {
809
- isPredicate,
810
- selectedTd
811
- });
812
- }
813
- }
814
- },
815
- // This is where pubsPane.js comes in, with: outline.UserInput.getAutoCompleteHandler("JournalTAC")(e);
816
- getAutoCompleteHandler: function getAutoCompleteHandler(mode) {
817
- qp('\n\n***** In getAutoCompleteHandler ****** mode = ' + mode);
818
- if (mode === 'PredicateAutoComplete') {
819
- mode = 'predicate';
820
- } else if (mode !== 'JournalTAC') {
821
- // hq // why? -tim - not 'predicate' below
822
- mode = 'all';
823
- }
824
- let InputBox;
825
- if (mode === 'JournalTAC') {
826
- // hq // Better to pass in InputBox as a param
827
- InputBox = myDocument.getElementById('inpid_journal_title');
828
- } else {
829
- InputBox = this.lastModified || outline.getSelection()[0].firstChild;
830
- }
831
- qp('InputBox=' + InputBox); // hq
832
- qp('InputBox.value=' + InputBox.value); // hq
833
-
834
- return function (enterEvent) {
835
- qp('ENTER EVENT=' + enterEvent);
836
- // Firefox 2.0.0.6 makes this not working? 'this' becomes [object HTMLInputElement]
837
- // but not [wrapped ...]
838
- // var InputBox=(typeof enterEvent=='object')?this:this.lastModified;//'this' is the <input> element
839
- qp('1. outside (if eneterEvent)');
840
- const e = {};
841
- const tdNode = InputBox.parentNode;
842
- if (!mode) mode = tdNode.nextSibling ? 'predicate' : 'all';
843
- e.pageX = UI.utils.findPos(tdNode)[0];
844
- e.pageY = UI.utils.findPos(tdNode)[1] + tdNode.clientHeight;
845
- qp('epX=' + e.pageX + ', epY=' + e.pageY + ', mode=' + mode);
846
- let menu = myDocument.getElementById(outline.UserInput.menuID);
847
- function setHighlightItem(item) {
848
- if (!item) return; // do not make changes
849
- if (menu.lastHighlight) menu.lastHighlight.className = '';
850
- menu.lastHighlight = item;
851
- menu.lastHighlight.className = 'activeItem';
852
- outline.showURI(UI.utils.getAbout(_solidLogic.store, menu.lastHighlight));
853
- }
854
- if (enterEvent) {
855
- // either the real event of the pseudo number passed by OutlineKeypressPanel
856
- qp('2. in (if enterEvent). with type = ' + typeof enterEvent);
857
- let newText = InputBox.value;
858
- if (typeof enterEvent === 'object') {
859
- qp('3. in typeof enterEvent is object, will switch to keys, arrows, etc. keycode = ' + enterEvent.keyCode);
860
- enterEvent.stopPropagation();
861
- if (menu && !menu.lastHighlight) {
862
- // this ensures the following operation valid
863
- setHighlightItem(menu.firstChild.firstChild);
864
- }
865
- switch (enterEvent.keyCode) {
866
- case 13: // enter
867
- case 9:
868
- // tab
869
- qp('handler: Enter or Tab');
870
- if (!menu) {
871
- outline.UserInput.clearInputAndSave();
872
- return;
873
- }
874
- if (!menu.lastHighlight) {
875
- if (mode === 'JournalTAC') {
876
- outline.UserInput.clearMenu();
877
- qp('no lastH');
878
- return 'no lastH';
879
- }
880
- return;
881
- } // warning?
882
-
883
- if (menu.lastHighlight.tagName === 'INPUT') {
884
- switch (menu.lastHighlight.value) {
885
- case 'New...':
886
- qp('subcase New');
887
- outline.UserInput.createNew();
888
- break;
889
- case 'GiveURI':
890
- qp('subcase GiveURI');
891
- outline.UserInput.inputURI();
892
- break;
893
- }
894
- } else {
895
- // pubsPane Stuff:
896
- if (mode === 'JournalTAC') {
897
- qp('movedArrow? ' + movedArrow);
898
- // Enter only works if arrows have been moved
899
- if (movedArrow && menu.lastHighlight) {
900
- // Get the title from the DOM
901
- // tr, th, div, innerHTML
902
- const jtitle = menu.lastHighlight.firstChild.firstChild.innerHTML;
903
- // tr, th, td, innerHTML
904
- let juri = menu.lastHighlight.firstChild.nextSibling.innerHTML;
905
- // clearing out the &lt; and &gt; from juri
906
- juri = juri.slice(4, -4);
907
- return ['gotdptitle', jtitle, juri];
908
- }
909
- // If doesn't qualify to be autocomplete, return this random string, since pubsPane checks for "gotdptitle"
910
- return 'asGivenTxt';
911
- }
912
- const inputTerm = UI.utils.getAbout(_solidLogic.store, menu.lastHighlight);
913
- const fillInType = mode === 'predicate' ? 'predicate' : 'object';
914
- outline.UserInput.clearMenu();
915
- outline.UserInput.fillInRequest(fillInType, InputBox.parentNode, inputTerm);
916
- // if (outline.UserInput.fillInRequest(fillInType,InputBox.parentNode,inputTerm))
917
- // outline.UserInput.clearMenu();
918
- }
919
- qp('outside');
920
- return;
921
- case 38:
922
- // up
923
- qp('handler: Arrow UP');
924
- movedArrow = true; // hq
925
- if (newText === '' && menu.lastHighlight.tagName === 'TR' && !menu.lastHighlight.previousSibling) {
926
- setHighlightItem(menu.firstChild.firstChild);
927
- } else {
928
- setHighlightItem(menu.lastHighlight.previousSibling);
929
- }
930
- return 'I\'m a little Arrow Up';
931
- case 40:
932
- // down
933
- qp('handler: Arrow Down');
934
- movedArrow = true; // hq
935
- if (menu.lastHighlight.tagName === 'INPUT') {
936
- setHighlightItem(menu.childNodes[1].firstChild);
937
- } else {
938
- setHighlightItem(menu.lastHighlight.nextSibling);
939
- }
940
- return 'I\'m a little Down Arrow';
941
- case 37: // left
942
- case 39:
943
- // right
944
- qp('handler: Arrow left, right');
945
- if (menu.lastHighlight.tagName === 'INPUT') {
946
- if (enterEvent.keyCode === 37) {
947
- setHighlightItem(menu.lastHighlight.previousSibling);
948
- } else {
949
- setHighlightItem(menu.lastHighlight.nextSibling);
950
- }
951
- }
952
- return;
953
- case 8:
954
- // backspace
955
- qp('handler: Backspace');
956
- newText = newText.slice(0, -1);
957
- break;
958
- case 27:
959
- // esc to enter literal
960
- qp('handler: Esc');
961
- if (!menu) {
962
- outline.UserInput.backOut();
963
- return;
964
- }
965
- outline.UserInput.clearMenu();
966
- // Not working? I don't know.
967
- // InputBox.removeEventListener('keypress',outline.UserInput.Autocomplete,false);
968
- return;
969
- // break
970
- default:
971
- qp('handler: Default');
972
- movedArrow = false; // hq
973
- // we need this because it is keypress, seeAlso performAutoCompleteEdit
974
- qp('oldtext=' + newText);
975
- newText += String.fromCharCode(enterEvent.charCode);
976
- qp('charcodent=' + enterEvent.charCode);
977
- qp('strcharcod=' + String.fromCharCode(enterEvent.charCode));
978
- console.log('DEFAULT txtstr=' + newText + '\n');
979
- // hq
980
- }
981
- } // endif typeof(event) === object
982
-
983
- // UI.log.warn(InputBox.choices.length);
984
- // for(i=0;InputBox.choices[i].label<newText;i++); //O(n) ToDo: O(log n)
985
- if (mode === 'all') {
986
- qp('generalAC after switch, newText=' + newText + 'mode is all');
987
- outline.UserInput.clearMenu();
988
- // outline.UserInput.showMenu(e,'GeneralAutoComplete',undefined,{'isPredicate':false,'selectedTd':tdNode,'choices':InputBox.choices, 'index':i});
989
- outline.UserInput.showMenu(e, 'GeneralAutoComplete', undefined, {
990
- inputText: newText,
991
- selectedTd: tdNode
992
- });
993
- if (newText.length === 0) outline.UserInput.WildCardButtons();
994
- } else if (mode === 'predicate') {
995
- qp('predicateAC after switch, newText=' + newText + 'mode is predicate');
996
- outline.UserInput.clearMenu();
997
- outline.UserInput.showMenu(e, 'PredicateAutoComplete', undefined, {
998
- inputText: newText,
999
- isPredicate: true,
1000
- selectedTd: tdNode
1001
- });
1002
- } else if (mode === 'JournalTAC') {
1003
- // hq
1004
- qp('JouralTAC after switch, newText=' + newText);
1005
- outline.UserInput.clearMenu();
1006
- // Goto showMenu
1007
- outline.UserInput.showMenu(e, 'JournalTitleAutoComplete', undefined, {
1008
- inputText: newText
1009
- }, 'orderisuseless');
1010
- }
1011
- menu = myDocument.getElementById(outline.UserInput.menuID);
1012
- if (!menu) {
1013
- qp('No menu element. Do not show menu.');
1014
- return;
1015
- }
1016
- qp('at end of handler\n^^^^^^^^^^^^^^^^^\n\n');
1017
- setHighlightItem(menu.firstChild.firstChild);
1018
- outline.showURI(UI.utils.getAbout(_solidLogic.store, menu.lastHighlight));
1019
- return 'nothing to return';
1020
- }
1021
- }; // end of return function
1022
- },
1023
- // Add the buttons which allow the suer to craete a new object
1024
- // Or reference an exiting one with a URI.
1025
- //
1026
- WildCardButtons: function WildCardButtons() {
1027
- const menuDiv = myDocument.getElementById(outline.UserInput.menuID);
1028
- const div = menuDiv.insertBefore(myDocument.createElement('div'), menuDiv.firstChild);
1029
- const input1 = div.appendChild(myDocument.createElement('input'));
1030
- const input2 = div.appendChild(myDocument.createElement('input'));
1031
- input1.type = 'button';
1032
- input1.value = 'New...';
1033
- input2.type = 'button';
1034
- input2.value = 'Know its URI';
1035
- function highlightInput(e) {
1036
- // same as the one in newMenu()
1037
- const menu = myDocument.getElementById(outline.UserInput.menuID);
1038
- if (menu.lastHighlight) menu.lastHighlight.className = '';
1039
- menu.lastHighlight = UI.utils.ancestor(UI.utils.getTarget(e), 'INPUT');
1040
- if (!menu.lastHighlight) return; // mouseover <TABLE>
1041
- menu.lastHighlight.className = 'activeItem';
1042
- }
1043
- div.addEventListener('mouseover', highlightInput, false);
1044
- input1.addEventListener('click', this.createNew, false);
1045
- input2.addEventListener('click', this.inputURI, false);
1046
- },
1047
- // ToDo: shrink rows when \n+backspace
1048
- Keypress: function (e) {
1049
- if (e.keyCode === 13) {
1050
- if (outline.targetOf(e).tagName !== 'TEXTAREA') {
1051
- this.clearInputAndSave();
1052
- } else {
1053
- // <TEXTAREA>
1054
- const preRows = parseInt(this.lastModified.getAttribute('rows'));
1055
- this.lastModified.setAttribute('rows', (preRows + 1).toString());
1056
- e.stopPropagation();
1057
- }
1058
- }
1059
- // Remark by Kenny: If the user wants to input more lines into an one-line-only blank.
1060
- // Direct him/her to a new blank (how?)
1061
- },
1062
- Mousedown: function (e) {
1063
- qp('MOUSING DOWN');
1064
- // temporary key ctrl+s or q for swiching mode
1065
- // This was in HCIOptions "right click to switch mode":
1066
- window.addEventListener('keypress', function (e) {
1067
- if (e.ctrlKey && (e.charCode === 115 || e.charCode === 113)) {
1068
- UserInput.switchMode();
1069
- }
1070
- }, false);
1071
- window.addEventListener('mousedown', UserInput.Mousedown, false);
1072
- const outlineView = document.getElementById('OutlineView');
1073
- if (outlineView) {
1074
- outlineView.oncontextmenu = function () {
1075
- return false;
1076
- };
1077
- }
1078
- if (e.button === 2) {
1079
- // right click
1080
- UserInput.switchMode();
1081
- if (e) {
1082
- e.preventDefault();
1083
- e.stopPropagation();
1084
- }
1085
- }
1086
- },
1087
- Mouseover: function Mouseover(e) {
1088
- this.className = 'bottom-border-active';
1089
- if (this._tabulatorMode === 1) {
1090
- switch (UI.utils.getTarget(e).tagName) {
1091
- case 'TD':
1092
- {
1093
- const preTd = UI.utils.getTarget(e);
1094
- if (preTd.className === 'pred') preTd.style.cursor = 'copy';
1095
- break;
1096
- }
1097
- // Uh...I think I might have to give up this
1098
- case 'DIV':
1099
- {
1100
- const border = UI.utils.getTarget(e);
1101
- if (UI.utils.getTarget(e).className === 'bottom-border') {
1102
- border.style.borderColor = 'rgb(100%,65%,0%)';
1103
- border.style.cursor = 'copy';
1104
- }
1105
- break;
1106
- }
1107
- default:
1108
- }
1109
- }
1110
- },
1111
- Mouseout: function (e) {
1112
- this.className = 'bottom-border';
1113
- if (this._tabulatorMode === 1) {
1114
- const border = UI.utils.getTarget(e);
1115
- if (UI.utils.getTarget(e).className === 'bottom-border') {
1116
- border.style.borderColor = 'transparent';
1117
- border.style.cursor = 'auto';
1118
- }
1119
- }
1120
- },
1121
- /**
1122
- * Utilities
1123
- */
1124
-
1125
- whatSortOfEditCell: function whatSortOfEditCell(selectedTd) {
1126
- if (selectedTd.nextSibling) return 'predicate';
1127
- const predicateTerm = this.getStatementAbout(selectedTd).predicate;
1128
- // var predicateTerm=selectedTd.parentNode.AJAR_statement.predicate;
1129
- if (_solidLogic.store.whether(predicateTerm, UI.ns.rdf('type'), UI.ns.owl('DatatypeProperty')) || _solidLogic.store.whether(predicateTerm, UI.ns.rdfs('range'), UI.ns.rdfs('Literal')) || predicateTerm.termType === 'Collection') {
1130
- return 'DatatypeProperty-like';
1131
- } else if (_solidLogic.store.whether(predicateTerm, rdf('type'), UI.ns.owl('ObjectProperty'))) {
1132
- return 'ObjectProperty-like';
1133
- } else {
1134
- return 'no-idea';
1135
- }
1136
- },
1137
- getStatementAbout: function getStatementAbout(something) {
1138
- // var trNode=something.parentNode;
1139
- const trNode = UI.utils.ancestor(something, 'TR');
1140
- if (!trNode) {
1141
- throw new Error('No ancestor TR for the TD we clicked on:' + something);
1142
- }
1143
- let statement;
1144
- try {
1145
- statement = trNode.AJAR_statement;
1146
- } catch (e) {
1147
- throw new Error('No AJAR_statement!' + something + something.textContent + ' has ancestor ' + trNode); // was commented out @@
1148
- // throw 'TR not a statement TR' // was commented out @@
1149
- }
1150
- // Set last modified here, I am not sure this will be ok.
1151
- this.lastModifiedStat = trNode.AJAR_statement;
1152
- this.statIsInverse = trNode.AJAR_inverse;
1153
- return statement;
1154
- },
1155
- createInputBoxIn: function createInputBoxIn(tdNode, defaultText) {
1156
- function UpAndDown(e) {
1157
- if (e.keyCode === 38 || e.keyCode === 40) {
1158
- outline.OutlinerKeypressPanel(e);
1159
- outline.UserInput.clearInputAndSave();
1160
- }
1161
- }
1162
- UI.log.info('myDocument in createInputBoxIn is now ' + myDocument.location);
1163
- UI.log.info('outline.document is now ' + outline.document.location);
1164
- const inputBox = myDocument.createElement('input');
1165
- inputBox.setAttribute('value', defaultText);
1166
- inputBox.setAttribute('class', 'textinput');
1167
- // inputBox.setAttribute('size','100');//should be the size of <TD>
1168
- if (tdNode.className !== 'undetermined selected') {
1169
- inputBox.setAttribute('size', '100'); // should be the size of <TD>
1170
- inputBox.addEventListener('keypress', UpAndDown, false);
1171
- }
1172
- tdNode.appendChild(inputBox);
1173
- return inputBox;
1174
- },
1175
- // called when 'New...' is clicked(eventlistener) or enter is pressed while 'New...' is highlighted
1176
- createNew: function createNew(_e) {
1177
- outline.UserInput.clearMenu();
1178
- const selectedTd = outline.getSelection()[0];
1179
- const targetdoc = selectedTd.parentNode.AJAR_statement.why;
1180
- const newTerm = _solidLogic.store.nextSymbol(targetdoc);
1181
- outline.UserInput.fillInRequest('object', selectedTd, newTerm);
1182
- // selection is changed
1183
- outline.outlineExpand(outline.getSelection()[0], newTerm);
1184
- },
1185
- inputURI: function inputURI(_e) {
1186
- const This = outline.UserInput;
1187
- This.clearMenu();
1188
- const selectedTd = outline.getSelection()[0];
1189
- UI.utils.emptyNode(selectedTd);
1190
- const tiptext = ' (Type a URI) ';
1191
- This.lastModified = This.createInputBoxIn(selectedTd, tiptext);
1192
- This.lastModified.select();
1193
- function typeURIhandler(e) {
1194
- e.stopPropagation();
1195
- switch (e.keyCode) {
1196
- case 13: // enter
1197
- case 9:
1198
- // tab
1199
- // this is input box
1200
- if (this.value !== tiptext) {
1201
- const newuri = this.value; // @@ Removed URI "fixup" code
1202
- This.fillInRequest('object', selectedTd, _solidLogic.store.sym(newuri));
1203
- }
1204
- }
1205
- }
1206
- This.lastModified.addEventListener('keypress', typeURIhandler, false);
1207
- /*
1208
- if (false && UI.isExtension){
1209
- var selectedTd = outline.getSelection()[0];
1210
- emptyNode(selectedTd);
1211
- var textbox = myDocument.createElementNS(kXULNS,'textbox');
1212
- textbox.setAttribute('type','autocomplete');
1213
- textbox.setAttribute('autocompletesearch','history');
1214
- selectedTd.appendChild(textbox);
1215
- urlbar = gURLBar.cloneNode(false);
1216
- selectedTd.appendChild(urlbar);
1217
- urlbar.mController = gURLBar.mController;
1218
- }
1219
- */
1220
- },
1221
- appendToPredicate: function appendToPredicate(predicateTd) {
1222
- let isEnd = false;
1223
- let trIterator;
1224
- try {
1225
- for (trIterator = predicateTd.parentNode.nextSibling; trIterator.childNodes.length === 1 && trIterator.AJAR_statement;
1226
- // number of nodes as condition, also beware of toggle Trs that don't have AJAR_statement
1227
- trIterator = trIterator.nextSibling) {
1228
- // ..
1229
- }
1230
- } catch (e) {
1231
- isEnd = true;
1232
- }
1233
- // if(!isEnd && HCIoptions["bottom insert highlights"].enabled) trIterator=trIterator.previousSibling;
1234
-
1235
- const insertTr = myDocument.createElement('tr');
1236
- // style stuff, I'll have to investigate appendPropertyTRs() somehow
1237
- insertTr.style.colspan = '1';
1238
- insertTr.style.display = 'block';
1239
- insertTr.style.display = '';
1240
- if (predicateTd.hasAttribute('rowspan')) {
1241
- predicateTd.setAttribute('rowspan', parseInt(predicateTd.getAttribute('rowspan')) + 1);
1242
- }
1243
- if (!predicateTd.hasAttribute('rowspan')) {
1244
- predicateTd.setAttribute('rowspan', '2');
1245
- }
1246
- if (!isEnd) {
1247
- trIterator.parentNode.insertBefore(insertTr, trIterator);
1248
- } else {
1249
- const table = predicateTd.parentNode.parentNode;
1250
- if (table.className === 'defaultPane') {
1251
- table.insertBefore(insertTr, table.lastChild);
1252
- } else {
1253
- table.appendChild(insertTr);
1254
- }
1255
- }
1256
- return insertTr;
1257
- },
1258
- bnode2symbol: function bnode2symbol(bnode, symbol) {
1259
- _solidLogic.store.copyTo(bnode, symbol, ['two-direction', 'delete']);
1260
- },
1261
- generateRequest: function generateRequest(tipText, trNew, isPredicate, notShow) {
1262
- let trNode;
1263
- if (!notShow) {
1264
- if (trNew) {
1265
- trNode = trNew;
1266
- } else {
1267
- trNode = UI.utils.ancestor(this.lastModified, 'TR');
1268
- }
1269
- UI.utils.emptyNode(trNode);
1270
- }
1271
-
1272
- // create the undetermined term
1273
- // Choice 1:
1274
- // var reqTerm=kb.literal("TBD");
1275
- // this is troblesome since RDFIndexedFormula does not allow me to add <x> <y> "TBD". twice
1276
- // Choice 2: Use a variable.
1277
- // Agreed. Kenny wonders whether there is RDF/XML representation of a variable.
1278
- // labelPriority[UI.ns.link('message').uri] = 20;
1279
-
1280
- // We must get rid of this clutter in the store. "OK, will be stroed in a seperate formula to avoid bugs", Kenny says
1281
- const tp = TempFormula;
1282
- const reqTerm = tp.bnode();
1283
- tp.add(reqTerm, UI.ns.rdf('type'), UI.ns.link('Request'));
1284
- if (tipText.length < 10) {
1285
- tp.add(reqTerm, UI.ns.link('message'), tp.literal(tipText));
1286
- } else {
1287
- tp.add(reqTerm, UI.ns.link('message'), tp.literal(tipText));
1288
- }
1289
- tp.add(reqTerm, UI.ns.link('to'), tp.literal('The User'));
1290
- tp.add(reqTerm, UI.ns.link('from'), tp.literal('The User'));
1291
-
1292
- // append the undetermined td
1293
- if (!notShow) {
1294
- let newNode;
1295
- if (isPredicate) {
1296
- newNode = trNode.appendChild(outline.outlinePredicateTD(reqTerm, trNode, false, false));
1297
- } else {
1298
- newNode = trNode.appendChild(outline.outlineObjectTD(reqTerm));
1299
- }
1300
- newNode.className = 'undetermined';
1301
- newNode.textContent = tipText;
1302
- }
1303
- return reqTerm;
1304
- },
1305
- showMenu: function showMenu(e, menuType, inputQuery, extraInformation, _order) {
1306
- // ToDo:order, make a class?
1307
- UI.log.info('myDocument is now ' + myDocument.location);
1308
- UI.log.info('outline.doucment is now ' + outline.document.location);
1309
- const This = this;
1310
- const menu = myDocument.createElement('div');
1311
- qp('\n**** In showMenu, menuType = ' + menuType + '\n');
1312
- if (extraInformation) {
1313
- for (const x in extraInformation) {
1314
- console.log('\t extra ' + x + ': ' + extraInformation[x] + '\n');
1315
- }
1316
- }
1317
- console.log('CREATED MENU\n'); // hq
1318
- menu.id = this.menuID;
1319
- menu.className = 'outlineMenu';
1320
- // menu.addEventListener('click',false);
1321
- menu.style.top = e.pageY + 'px';
1322
- menu.style.left = e.pageX + 'px';
1323
-
1324
- /// /For pubsPane
1325
- // This is for setting the location of the dropdown menu, because
1326
- // JournalTitleAutoComplete is called with a keypress, and not mouse actions
1327
- // Get Offset of an HTML element
1328
- const getOffset = function getOffset(el) {
1329
- let _lf = 0;
1330
- let _tp = 0;
1331
- let oldlf = 0;
1332
- let oldtp = 0;
1333
- let newlf = 0;
1334
- let newtp = 0;
1335
-
1336
- // repeatedly get ancestor's positions
1337
- // TODO: STILL a small offset/bug
1338
- while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
1339
- newlf = el.offsetLeft;
1340
- newtp = el.offsetTop;
1341
-
1342
- // only change if the new parent's offset is different
1343
- if (newlf !== oldlf) {
1344
- _lf += el.offsetLeft - el.scrollLeft;
1345
- }
1346
- if (newtp !== oldtp) {
1347
- _tp += el.offsetTop - el.scrollTop;
1348
- }
1349
- oldlf = newlf;
1350
- oldtp = newtp;
1351
- el = el.parentNode;
1352
- }
1353
- // there is a constant offset
1354
- return {
1355
- top: _tp + 54,
1356
- left: _lf - 38
1357
- };
1358
- };
1359
- // Change the position of menu in pubsPane's journal Title AC
1360
- if (menuType === 'JournalTitleAutoComplete') {
1361
- // hql
1362
- const loc = getOffset(myDocument.getElementById('inpid_journal_title'));
1363
- loc.left -= myDocument.getElementById('inpid_journal_title').scrollTop;
1364
- menu.style.top = loc.top + 'px';
1365
- menu.style.left = loc.left + 'px';
1366
- }
1367
- console.log('menu at top=' + menu.style.top + ' left=' + menu.style.left + '\n'); // hql
1368
- // \\\\\\\hql
1369
-
1370
- myDocument.body.appendChild(menu);
1371
- const table = menu.appendChild(myDocument.createElement('table'));
1372
- menu.lastHighlight = null;
1373
- function highlightTr(e) {
1374
- if (menu.lastHighlight) menu.lastHighlight.className = '';
1375
- menu.lastHighlight = UI.utils.ancestor(UI.utils.getTarget(e), 'TR');
1376
- if (!menu.lastHighlight) return; // mouseover <TABLE>
1377
- menu.lastHighlight.className = 'activeItem';
1378
- }
1379
- table.addEventListener('mouseover', highlightTr, false);
1380
-
1381
- // setting for action after selecting item
1382
- let selectItem;
1383
- switch (menuType) {
1384
- case 'DidYouMeanDialog':
1385
- selectItem = function selectItem(e) {
1386
- qp('DID YOU MEAN SELECT ITEM!!!!!');
1387
- const target = UI.utils.ancestor(UI.utils.getTarget(e), 'TR');
1388
- if (target.childNodes.length === 2 && target.nextSibling) {
1389
- // Yes
1390
- _solidLogic.store.add(bnodeTerm, IDpredicate, IDterm); // used to connect the two
1391
- outline.UserInput.clearMenu();
1392
- } else if (target.childNodes.length === 2) {
1393
- outline.UserInput.clearMenu();
1394
- }
1395
- };
1396
- break;
1397
- case 'LimitedPredicateChoice':
1398
- {
1399
- const clickedTd = extraInformation.clickedTd;
1400
- selectItem = function selectItem(e) {
1401
- qp('LIMITED P SELECT ITEM!!!!');
1402
- const selectedPredicate = UI.utils.getAbout(_solidLogic.store, UI.utils.getTarget(e));
1403
- const predicateChoices = clickedTd.parentNode.AJAR_statement.predicate.elements;
1404
- for (let i = 0; i < predicateChoices.length; i++) {
1405
- if (predicateChoices[i].sameTerm(selectedPredicate)) {
1406
- predicateChoices.unshift(predicateChoices.splice(i, 1)[0]);
1407
- }
1408
- }
1409
- outline.UserInput.clearMenu();
1410
-
1411
- // refresh the choice
1412
- const tr = clickedTd.parentNode;
1413
- const newTd = outline.outlinePredicateTD(tr.AJAR_statement.predicate, tr);
1414
- tr.insertBefore(newTd, clickedTd);
1415
- tr.removeChild(clickedTd);
1416
- This.lastModified.select();
1417
- };
1418
- break;
1419
- }
1420
- case 'PredicateAutoComplete':
1421
- case 'GeneralAutoComplete':
1422
- case 'GeneralPredicateChoice':
1423
- case 'JournalTitleAutoComplete': // hql
1424
- case 'TypeChoice':
1425
- {
1426
- // Clickable menu
1427
- const isPredicate = extraInformation.isPredicate;
1428
- const selectedTd = extraInformation.selectedTd;
1429
- selectItem = function selectItem(e) {
1430
- qp('WOOHOO');
1431
- const inputTerm = UI.utils.getAbout(_solidLogic.store, UI.utils.getTarget(e));
1432
- qp('GENERAL SELECT ITEM!!!!!!=' + inputTerm);
1433
- qp('target=' + UI.utils.getTarget(e));
1434
- if (isPredicate) {
1435
- qp('1');
1436
- if (outline.UserInput.fillInRequest('predicate', selectedTd, inputTerm)) {
1437
- qp('2');
1438
- outline.UserInput.clearMenu();
1439
- }
1440
- } else {
1441
- qp('3');
1442
- // thisInput.fillInRequest('object',selectedTd,inputTerm); //why is this not working?
1443
- if (outline.UserInput.fillInRequest('object', selectedTd, inputTerm)) {
1444
- qp('4');
1445
- outline.UserInput.clearMenu();
1446
- }
1447
- }
1448
- };
1449
- break;
1450
- }
1451
- default:
1452
- throw new Error('userinput: unexpected mode');
1453
- }
1454
- // hq: this line makes the menu clickable
1455
- table.addEventListener('click', selectItem, false);
1456
-
1457
- // Add Items to the list
1458
- // build NameSpaces here from knowledge base
1459
- const NameSpaces = {};
1460
- // for each (ontology in ontologies)
1461
- _solidLogic.store.each(undefined, UI.ns.rdf('type'), UI.ns.owl('Ontology')).forEach(function (ontology) {
1462
- const label = UI.utils.label(ontology);
1463
- if (!label) return;
1464
- // this is like extracting metadata from URI. Maybe it's better not to take the abbrevs.
1465
- const match = label.value.match(/\((.+?)\)/);
1466
- if (match) {
1467
- NameSpaces[match[1]] = ontology.uri;
1468
- } else {
1469
- NameSpaces[label.value] = ontology.uri;
1470
- }
1471
- });
1472
- function addMenuItem(predicate) {
1473
- if (table.firstChild && table.firstChild.className === 'no-suggest') {
1474
- table.removeChild(table.firstChild);
1475
- }
1476
- const Label = UI.utils.predicateLabelForXML(predicate, false);
1477
- // Label = Label.slice(0,1).toUpperCase() + Label.slice(1);
1478
-
1479
- if (!predicate.uri) return; // bnode
1480
- let theNamespace = '??';
1481
- for (const name in NameSpaces) {
1482
- UI.log.debug(NameSpaces[name]);
1483
- if ($rdf.Util.string_startswith(predicate.uri, NameSpaces[name])) {
1484
- theNamespace = name;
1485
- break;
1486
- }
1487
- }
1488
- const tr = table.appendChild(myDocument.createElement('tr'));
1489
- tr.setAttribute('about', predicate);
1490
- const th = tr.appendChild(myDocument.createElement('th'));
1491
- th.appendChild(myDocument.createElement('div')).appendChild(myDocument.createTextNode(Label));
1492
- tr.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode(theNamespace.toUpperCase()));
1493
- }
1494
- function addPredicateChoice(selectedQuery) {
1495
- return function (bindings) {
1496
- const predicate = bindings[selectedQuery.vars[0]];
1497
- addMenuItem(predicate);
1498
- };
1499
- }
1500
- function clearMenu(e) {
1501
- This.clearMenu();
1502
- e.stopPropagation();
1503
- }
1504
- let inputText;
1505
- let bnodeTerm;
1506
- let IDpredicate;
1507
- let IDterm;
1508
- let tr;
1509
- let th;
1510
- switch (menuType) {
1511
- case 'DidYouMeanDialog':
1512
- {
1513
- const dialogTerm = extraInformation.dialogTerm;
1514
- bnodeTerm = extraInformation.bnodeTerm;
1515
- // have to do style instruction passing
1516
- menu.style.width = 'auto';
1517
- const h1 = table.appendChild(myDocument.createElement('tr'));
1518
- const h1th = h1.appendChild(myDocument.createElement('th'));
1519
- h1th.appendChild(myDocument.createTextNode('Did you mean...'));
1520
- const plist = _solidLogic.store.statementsMatching(dialogTerm);
1521
- let i;
1522
- for (i = 0; i < plist.length; i++) {
1523
- if (_solidLogic.store.whether(plist[i].predicate, rdf('type'), UI.ns.owl('InverseFunctionalProperty'))) {
1524
- break;
1525
- }
1526
- }
1527
- const IDpredicate = plist[i].predicate;
1528
- const IDterm = _solidLogic.store.any(dialogTerm, plist[i].predicate);
1529
- const text = UI.utils.label(dialogTerm) + ' who has ' + UI.utils.label(IDpredicate) + ' ' + IDterm + '?';
1530
- const h2 = table.appendChild(myDocument.createElement('tr'));
1531
- const h2th = h2.appendChild(myDocument.createElement('th'));
1532
- h2th.appendChild(myDocument.createTextNode(text));
1533
- h1th.setAttribute('colspan', '2');
1534
- h2th.setAttribute('colspan', '2');
1535
- const ans1 = table.appendChild(myDocument.createElement('tr'));
1536
- ans1.appendChild(myDocument.createElement('th')).appendChild(myDocument.createTextNode('Yes'));
1537
- ans1.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode('BOOLEAN'));
1538
- const ans2 = table.appendChild(myDocument.createElement('tr'));
1539
- ans2.appendChild(myDocument.createElement('th')).appendChild(myDocument.createTextNode('No'));
1540
- ans2.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode('BOOLEAN'));
1541
- break;
1542
- }
1543
- case 'PredicateAutoComplete':
1544
- // Prompt user for possible relationships for new data
1545
- {
1546
- inputText = extraInformation.inputText;
1547
- /* The labeller functionality code ahs been lost or dropped -- reinstate this? */
1548
- // @@ TODO: Write away the need for exception on next line
1549
-
1550
- const predicates = outline.labeller.searchAdv(inputText, undefined, 'predicate');
1551
- // @@ TODO: Write away the need for exception on next line
1552
-
1553
- const results = []; // @@ fixme
1554
- for (let i = 0; i < predicates.length; i++) {
1555
- const tempQuery = {};
1556
- tempQuery.vars = [];
1557
- tempQuery.vars.push('Kenny');
1558
- const tempBinding = {};
1559
- tempBinding.Kenny = _solidLogic.store.fromNT(predicates[i].NT);
1560
- try {
1561
- addPredicateChoice(tempQuery)(tempBinding);
1562
- } catch (e) {
1563
- throw new Error('I\'ll deal with bnodes later...[Kenny]' + e);
1564
- } // I'll deal with bnodes later...
1565
- }
1566
-
1567
- // @@ TODO: Write away the need for exception on next line
1568
-
1569
- const entries = results[0];
1570
- if (entries.length === 0) {
1571
- console.log('cm length 0\n'); // hq
1572
- this.clearMenu();
1573
- return;
1574
- }
1575
- for (let i = 0; i < entries.length && i < 10; i++) {
1576
- // do not show more than 30 items
1577
- addMenuItem(entries[i][1]);
1578
- }
1579
- break;
1580
- }
1581
- case 'GeneralAutoComplete':
1582
- {
1583
- inputText = extraInformation.inputText;
1584
- let results;
1585
- try {
1586
- results = outline.labeller.search(inputText);
1587
- } catch (e) {
1588
- console.log('GeneralAutoComplete: debug me ' + extraInformation.selectedTd.textContent + '\n' + e + '\n');
1589
- }
1590
- const entries = results[0]; // [label, subject,priority]
1591
- const types = results[1];
1592
- if (entries.length === 0) {
1593
- console.log('cm length 0\n'); // hq
1594
- this.clearMenu();
1595
- return;
1596
- }
1597
- for (let i = 0; i < entries.length && i < 10; i++) {
1598
- // do not show more than 30 items
1599
- // console.log("\nGEN ENTRIES["+i+"] = "+entries[i]+"\n");//hq
1600
- const thisNT = entries[i][1].toNT();
1601
- // console.log("thisNT="+thisNT+"\n");
1602
- tr = table.appendChild(myDocument.createElement('tr'));
1603
- tr.setAttribute('about', thisNT);
1604
- th = tr.appendChild(myDocument.createElement('th'));
1605
- th.appendChild(myDocument.createElement('div')).appendChild(myDocument.createTextNode(entries[i][0]));
1606
- // var theTerm = entries[i][1]
1607
- // var type=theTerm?kb.any(kb.fromNT(thisNT),rdf('type')):undefined;
1608
- const type = types[i];
1609
- const typeLabel = type ? UI.utils.label(type) : '';
1610
- tr.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode(typeLabel));
1611
- }
1612
- /* var choices=extraInformation.choices;
1613
- var index=extraInformation.index;
1614
- for (var i=index-10;i<index+20;i++){ //show 30 items
1615
- if (i<0) i=0;
1616
- if (i==choices.length) break;
1617
- var thisNT=choices[i].NT;
1618
- var tr=table.appendChild(myDocument.createElement('tr'));
1619
- tr.setAttribute('about',thisNT);
1620
- var th=tr.appendChild(myDocument.createElement('th'))
1621
- th.appendChild(myDocument.createElement('div')).appendChild(myDocument.createTextNode(choices[i].label));
1622
- var theTerm=kb.fromNT(thisNT);
1623
- var type=theTerm?kb.any(kb.fromNT(thisNT),rdf('type')):undefined;
1624
- var typeLabel=type?label(type):"";
1625
- tr.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode(typeLabel));
1626
- }
1627
- */
1628
- break;
1629
- }
1630
- case 'JournalTitleAutoComplete':
1631
- {
1632
- // hql
1633
- // HEART OF JOURNAL TITLE AUTOCOMPLETE
1634
-
1635
- // extraInformatin is from above getAutoCompleteHandler
1636
- inputText = extraInformation.inputText;
1637
- console.log('testing searching text= ' + inputText + ' =====\n');
1638
- console.log('\n===start JournalTitleAutoComplete\n');
1639
-
1640
- // Gets all the URI's with type Journal in the knowledge base
1641
- const juris = _solidLogic.store.each(undefined, rdf('type'), bibo('Journal'));
1642
- const matchedtitle = []; // debugging display before inserts into menu
1643
-
1644
- for (let i = 0; i < juris.length; i++) {
1645
- const juri = juris[i];
1646
- const jtitle = _solidLogic.store.each(juri, dcelems('title'), undefined);
1647
- const jtstr = jtitle + '';
1648
- const matchstr = inputText.toLowerCase();
1649
- const jTitleLowerCase = jtstr.toLowerCase();
1650
-
1651
- // If the inputText as a whole is contained in a journal title
1652
- if (jTitleLowerCase.search(matchstr) !== -1) {
1653
- qp('FOUND A Journal Title Match!!!!!!');
1654
- matchedtitle.push(jtitle);
1655
-
1656
- // Add it as a row to the menu:
1657
- // === Title, URI ==
1658
- const tr = table.appendChild(myDocument.createElement('tr'));
1659
- tr.setAttribute('about', 'journalTitle');
1660
- const th = tr.appendChild(myDocument.createElement('th'));
1661
- th.appendChild(myDocument.createElement('div')).appendChild(myDocument.createTextNode(jtitle));
1662
- tr.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode(juri));
1663
- }
1664
- }
1665
- console.log('matched: ' + matchedtitle + '\n');
1666
- console.log('\\\\done showMenu\'s JTAutocomplete\n');
1667
- break;
1668
- }
1669
- case 'LimitedPredicateChoice':
1670
- {
1671
- const choiceTerm = UI.utils.getAbout(_solidLogic.store, extraInformation.clickedTd);
1672
- // because getAbout relies on kb.fromNT, which does not deal with
1673
- // the 'Collection' termType. This termType is ambiguous anyway.
1674
- choiceTerm.termType = 'Collection';
1675
- const choices = _solidLogic.store.each(choiceTerm, UI.ns.link('element'));
1676
- for (let i = 0; i < choices.length; i++) {
1677
- addMenuItem(choices[i]);
1678
- }
1679
- break;
1680
- }
1681
- default:
1682
- {
1683
- tr = table.appendChild(myDocument.createElement('tr'));
1684
- tr.className = 'no-suggest';
1685
- th = tr.appendChild(myDocument.createElement('th'));
1686
- th.appendChild(myDocument.createElement('div')).appendChild(myDocument.createTextNode('No suggested choices. Try to type instead.'));
1687
- tr.appendChild(myDocument.createElement('td')).appendChild(myDocument.createTextNode('OK'));
1688
- // var This = this
1689
- tr.addEventListener('click', clearMenu, 'false');
1690
- const nullFetcher = function () {};
1691
- switch (inputQuery.constructor.name) {
1692
- case 'Array':
1693
- for (let i = 0; i < inputQuery.length; i++) {
1694
- _solidLogic.store.query(inputQuery[i], addPredicateChoice(inputQuery[i]), nullFetcher);
1695
- }
1696
- break;
1697
- case 'undefined':
1698
- throw new Error('addPredicateChoice: query is not defined');
1699
- // break
1700
- default:
1701
- _solidLogic.store.query(inputQuery, addPredicateChoice(inputQuery), nullFetcher);
1702
- }
1703
- }
1704
- }
1705
- },
1706
- // funciton showMenu
1707
-
1708
- /* When a blank is filled. This happens even for blue-cross editing. */
1709
- fillInRequest: function fillInRequest(type, selectedTd, inputTerm) {
1710
- const tr = selectedTd.parentNode;
1711
- const stat = tr.AJAR_statement;
1712
- const isInverse = tr.AJAR_inverse;
1713
- const reqTerm = type === 'object' ? stat.object : stat.predicate;
1714
- let newStat;
1715
- let doNext = false;
1716
-
1717
- // RDF Event
1718
-
1719
- let eventhandler;
1720
- if (_solidLogic.store.any(reqTerm, UI.ns.link('onfillin'))) {
1721
- /* 2017 -- Not sure what is supposed to happen here -- timbl @@@@
1722
- eventhandler = function(subject) {
1723
- return kb.any(reqTerm, UI.ns.link('onfillin')).value)
1724
- }
1725
- */
1726
- }
1727
- if (type === 'predicate') {
1728
- // ToDo: How to link two things with an inverse relationship
1729
- const newTd = outline.outlinePredicateTD(inputTerm, tr, false, false);
1730
- if (selectedTd.nextSibling.className !== 'undetermined') {
1731
- const s = new $rdf.Statement(stat.subject, inputTerm, stat.object, stat.why);
1732
- try {
1733
- _solidLogic.store.updater.update([], [s], function (uri, success, errorBody) {
1734
- if (success) {
1735
- newStat = _solidLogic.store.anyStatementMatching(stat.subject, inputTerm, stat.object, stat.why);
1736
- tr.AJAR_statement = newStat;
1737
- newTd.className = newTd.className.replace(/ pendingedit/g, '');
1738
- } else {
1739
- // outline.UserInput.deleteTriple(newTd,true);
1740
- // Warn the user that the write has failed.
1741
- UI.log.warn('Failure occurs (#2) while inserting ' + tr.AJAR_statement + '\n\n' + errorBody);
1742
- }
1743
- });
1744
- } catch (e) {
1745
- UI.log.error(e);
1746
- // Warn the user that the write has failed.
1747
- UI.log.warn('Error when insert (#2) of statement ' + s + ':\n\t' + e);
1748
- return;
1749
- }
1750
- newTd.className += ' pendingedit';
1751
- this.lastModified = null;
1752
- } else {
1753
- this.formUndetStat(tr, stat.subject, inputTerm, stat.object, stat.why, false);
1754
- outline.walk('right');
1755
- doNext = true;
1756
- }
1757
- outline.replaceTD(newTd, selectedTd);
1758
- TempFormula.remove(stat);
1759
- } else if (type === 'object') {
1760
- // Object value has been edited
1761
- const newTd = outline.outlineObjectTD(inputTerm);
1762
- outline.replaceTD(newTd, selectedTd);
1763
- if (!selectedTd.previousSibling || selectedTd.previousSibling.className !== 'undetermined') {
1764
- let s;
1765
- if (!isInverse) {
1766
- s = new $rdf.Statement(stat.subject, stat.predicate, inputTerm, stat.why);
1767
- } else {
1768
- s = new $rdf.Statement(inputTerm, stat.predicate, stat.object, stat.why);
1769
- }
1770
- try {
1771
- _solidLogic.store.updater.update([], [s], function (uri, success, _errorBody) {
1772
- UI.log.info('@@ usinput.js (object) callback ok=' + success + ' for statement:' + s + '\n ');
1773
- let newStats;
1774
- if (success) {
1775
- newTd.className = newTd.className.replace(/ pendingedit/g, ''); // User feedback
1776
- if (!isInverse) {
1777
- newStats = _solidLogic.store.statementsMatching(stat.subject, stat.predicate, inputTerm, stat.why);
1778
- } else {
1779
- newStats = _solidLogic.store.statementsMatching(inputTerm, stat.predicate, stat.object, stat.why);
1780
- }
1781
- if (!newStats.length) {
1782
- UI.log.error('userinput.js 1711: Can\'t find statememt!');
1783
- }
1784
- tr.AJAR_statement = newStats[0];
1785
- } else {
1786
- UI.log.warn('userinput.js (object): Fail trying to insert statement ' + s);
1787
- // outline.UserInput.deleteTriple(newTd,true);
1788
- }
1789
- });
1790
- } catch (e) {
1791
- // outline.UserInput.deleteTriple(newTd,true);
1792
- UI.log.error('userinput.js (object): exception trying to insert statement ' + s + ': ' + UI.utils.stackString(e));
1793
- UI.log.warn('Error trying to insert statement ' + s + ':\n' + e);
1794
- return;
1795
- }
1796
- this.lastModified = null;
1797
- newTd.className += ' pendingedit';
1798
- } else {
1799
- // ?this.formUndetStat(tr...)
1800
- outline.walk('left');
1801
- doNext = true;
1802
- }
1803
- // removal of the undetermined statement
1804
- TempFormula.remove(stat);
1805
- }
1806
- // do not throw away user's work even update fails
1807
- UserInputFormula.statements.push(newStat);
1808
- if (eventhandler) eventhandler(stat.subject);
1809
- if (doNext) {
1810
- this.startFillInText(outline.getSelection()[0]);
1811
- } else {
1812
- return true;
1813
- } // can clearMenu
1814
- },
1815
- formUndetStat: function formUndetStat(trNode, subject, predicate, object, why, inverse) {
1816
- trNode.AJAR_inverse = inverse;
1817
- trNode.AJAR_statement = TempFormula.add(subject, predicate, object, why);
1818
- return trNode.AJAR_statement;
1819
- }
1820
- };
1821
- }