solid-panes 3.7.2 → 3.7.3-3425a37d

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 (354) hide show
  1. package/dist/dashboard/basicPreferences.js +155 -0
  2. package/dist/dashboard/basicPreferences.js.map +1 -0
  3. package/dist/dashboard/dashboardPane.js +63 -0
  4. package/dist/dashboard/dashboardPane.js.map +1 -0
  5. package/dist/dashboard/homepage.js +63 -0
  6. package/dist/dashboard/homepage.js.map +1 -0
  7. package/dist/home/homePane.js +68 -0
  8. package/dist/home/homePane.js.map +1 -0
  9. package/dist/index.js +48 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/internal/internalPane.js +195 -0
  12. package/dist/internal/internalPane.js.map +1 -0
  13. package/dist/mainPage/footer.js +16 -0
  14. package/dist/mainPage/footer.js.map +1 -0
  15. package/dist/mainPage/header.js +84 -0
  16. package/dist/mainPage/header.js.map +1 -0
  17. package/{lib → dist}/mainPage/index.d.ts.map +1 -1
  18. package/dist/mainPage/index.js +30 -0
  19. package/dist/mainPage/index.js.map +1 -0
  20. package/dist/outline/context.js +13 -0
  21. package/dist/outline/context.js.map +1 -0
  22. package/dist/outline/propertyViews.js +33 -0
  23. package/dist/outline/propertyViews.js.map +1 -0
  24. package/dist/outline/viewAsImage.js +7 -0
  25. package/dist/outline/viewAsImage.js.map +1 -0
  26. package/{lib → dist}/outline/viewAsMbox.js +4 -14
  27. package/dist/outline/viewAsMbox.js.map +1 -0
  28. package/dist/pad/padPane.js +420 -0
  29. package/dist/pad/padPane.js.map +1 -0
  30. package/dist/sharing/sharingPane.js +45 -0
  31. package/dist/sharing/sharingPane.js.map +1 -0
  32. package/dist/tabbed/tabbedPane.js +55 -0
  33. package/dist/tabbed/tabbedPane.js.map +1 -0
  34. package/dist/trustedApplications/trustedApplications.dom.js +158 -0
  35. package/dist/trustedApplications/trustedApplications.dom.js.map +1 -0
  36. package/dist/trustedApplications/trustedApplications.utils.js +24 -0
  37. package/dist/trustedApplications/trustedApplications.utils.js.map +1 -0
  38. package/dist/trustedApplications/trustedApplications.view.js +62 -0
  39. package/dist/trustedApplications/trustedApplications.view.js.map +1 -0
  40. package/dist/types.js +2 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/versionInfo.js +31 -0
  43. package/dist/versionInfo.js.map +1 -0
  44. package/package.json +34 -22
  45. package/Documentation/VisualLanguage.html +0 -538
  46. package/Documentation/conventions.md +0 -333
  47. package/coverage/clover.xml +0 -152
  48. package/coverage/coverage-final.json +0 -6
  49. package/coverage/lcov-report/base.css +0 -224
  50. package/coverage/lcov-report/block-navigation.js +0 -87
  51. package/coverage/lcov-report/favicon.png +0 -0
  52. package/coverage/lcov-report/index.html +0 -131
  53. package/coverage/lcov-report/outline/index.html +0 -161
  54. package/coverage/lcov-report/outline/outlineIcons.js.html +0 -565
  55. package/coverage/lcov-report/outline/propertyViews.ts.html +0 -196
  56. package/coverage/lcov-report/outline/viewAsImage.ts.html +0 -121
  57. package/coverage/lcov-report/outline/viewAsMbox.ts.html +0 -127
  58. package/coverage/lcov-report/prettify.css +0 -1
  59. package/coverage/lcov-report/prettify.js +0 -2
  60. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  61. package/coverage/lcov-report/sorter.js +0 -210
  62. package/coverage/lcov-report/trustedApplications/index.html +0 -116
  63. package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +0 -238
  64. package/coverage/lcov.info +0 -204
  65. package/dev/index.html +0 -28
  66. package/dev/loader.ts +0 -91
  67. package/dev/pane/index.ts +0 -10
  68. package/doc/images/panes-for-classes.epgz +0 -0
  69. package/doc/images/panes-for-classes.svg +0 -609
  70. package/eslint.config.mjs +0 -34
  71. package/jest.config.js +0 -27
  72. package/jest.setup.ts +0 -4
  73. package/lib/RDFXMLPane.js +0 -59
  74. package/lib/RDFXMLPane.js.map +0 -1
  75. package/lib/argument/argumentPane.js +0 -62
  76. package/lib/argument/argumentPane.js.map +0 -1
  77. package/lib/attach/attachPane.js +0 -404
  78. package/lib/attach/attachPane.js.map +0 -1
  79. package/lib/audio/audioPane.js +0 -183
  80. package/lib/audio/audioPane.js.map +0 -1
  81. package/lib/classInstancePane.js +0 -93
  82. package/lib/classInstancePane.js.map +0 -1
  83. package/lib/dashboard/basicPreferences.js +0 -229
  84. package/lib/dashboard/basicPreferences.js.map +0 -1
  85. package/lib/dashboard/dashboardPane.js +0 -73
  86. package/lib/dashboard/dashboardPane.js.map +0 -1
  87. package/lib/dashboard/homepage.js +0 -86
  88. package/lib/dashboard/homepage.js.map +0 -1
  89. package/lib/dataContentPane.js +0 -259
  90. package/lib/dataContentPane.js.map +0 -1
  91. package/lib/defaultPane.js +0 -76
  92. package/lib/defaultPane.js.map +0 -1
  93. package/lib/dokieli/dokieliPane.js +0 -173
  94. package/lib/dokieli/dokieliPane.js.map +0 -1
  95. package/lib/dokieli/new.js +0 -9
  96. package/lib/dokieli/new.js.map +0 -1
  97. package/lib/form/pane.js +0 -186
  98. package/lib/form/pane.js.map +0 -1
  99. package/lib/global.d.js +0 -2
  100. package/lib/global.d.js.map +0 -1
  101. package/lib/home/homePane.js +0 -91
  102. package/lib/home/homePane.js.map +0 -1
  103. package/lib/humanReadablePane.js +0 -138
  104. package/lib/humanReadablePane.js.map +0 -1
  105. package/lib/imagePane.js +0 -71
  106. package/lib/imagePane.js.map +0 -1
  107. package/lib/index.js +0 -112
  108. package/lib/index.js.map +0 -1
  109. package/lib/internal/internalPane.js +0 -184
  110. package/lib/internal/internalPane.js.map +0 -1
  111. package/lib/mainPage/footer.js +0 -22
  112. package/lib/mainPage/footer.js.map +0 -1
  113. package/lib/mainPage/header.js +0 -152
  114. package/lib/mainPage/header.js.map +0 -1
  115. package/lib/mainPage/index.js +0 -42
  116. package/lib/mainPage/index.js.map +0 -1
  117. package/lib/microblogPane/microblogPane.js +0 -1032
  118. package/lib/microblogPane/microblogPane.js.map +0 -1
  119. package/lib/n3Pane.js +0 -57
  120. package/lib/n3Pane.js.map +0 -1
  121. package/lib/outline/context.js +0 -19
  122. package/lib/outline/context.js.map +0 -1
  123. package/lib/outline/manager.js +0 -2264
  124. package/lib/outline/manager.js.map +0 -1
  125. package/lib/outline/manager.test.d.ts +0 -2
  126. package/lib/outline/manager.test.d.ts.map +0 -1
  127. package/lib/outline/manager.test.js +0 -210
  128. package/lib/outline/manager.test.js.map +0 -1
  129. package/lib/outline/outlineIcons.js +0 -128
  130. package/lib/outline/outlineIcons.js.map +0 -1
  131. package/lib/outline/propertyViews.js +0 -44
  132. package/lib/outline/propertyViews.js.map +0 -1
  133. package/lib/outline/propertyViews.test.d.ts +0 -2
  134. package/lib/outline/propertyViews.test.d.ts.map +0 -1
  135. package/lib/outline/propertyViews.test.js +0 -27
  136. package/lib/outline/propertyViews.test.js.map +0 -1
  137. package/lib/outline/queryByExample.js +0 -286
  138. package/lib/outline/queryByExample.js.map +0 -1
  139. package/lib/outline/userInput.js +0 -1817
  140. package/lib/outline/userInput.js.map +0 -1
  141. package/lib/outline/viewAsImage.js +0 -17
  142. package/lib/outline/viewAsImage.js.map +0 -1
  143. package/lib/outline/viewAsMbox.js.map +0 -1
  144. package/lib/pad/padPane.js +0 -417
  145. package/lib/pad/padPane.js.map +0 -1
  146. package/lib/playlist/playlistPane.js +0 -125
  147. package/lib/playlist/playlistPane.js.map +0 -1
  148. package/lib/registerPanes.js +0 -146
  149. package/lib/registerPanes.js.map +0 -1
  150. package/lib/schedule/formsForSchedule.js +0 -8
  151. package/lib/schedule/formsForSchedule.js.map +0 -1
  152. package/lib/schedule/schedulePane.js +0 -895
  153. package/lib/schedule/schedulePane.js.map +0 -1
  154. package/lib/sharing/sharingPane.js +0 -49
  155. package/lib/sharing/sharingPane.js.map +0 -1
  156. package/lib/slideshow/slideshowPane.js +0 -84
  157. package/lib/slideshow/slideshowPane.js.map +0 -1
  158. package/lib/socialPane.js +0 -431
  159. package/lib/socialPane.js.map +0 -1
  160. package/lib/tabbed/tabbedPane.js +0 -72
  161. package/lib/tabbed/tabbedPane.js.map +0 -1
  162. package/lib/tableViewPane.js +0 -58
  163. package/lib/tableViewPane.js.map +0 -1
  164. package/lib/test-import-export/common.js +0 -12
  165. package/lib/test-import-export/common.js.map +0 -1
  166. package/lib/test-import-export/edit-importer.js +0 -25
  167. package/lib/test-import-export/edit-importer.js.map +0 -1
  168. package/lib/test-import-export/testImportExport.js +0 -2
  169. package/lib/test-import-export/testImportExport.js.map +0 -1
  170. package/lib/transaction/pane.js +0 -479
  171. package/lib/transaction/pane.js.map +0 -1
  172. package/lib/transaction/period.js +0 -325
  173. package/lib/transaction/period.js.map +0 -1
  174. package/lib/trip/tripPane.js +0 -176
  175. package/lib/trip/tripPane.js.map +0 -1
  176. package/lib/trustedApplications/trustedApplications.dom.js +0 -177
  177. package/lib/trustedApplications/trustedApplications.dom.js.map +0 -1
  178. package/lib/trustedApplications/trustedApplications.test.d.ts +0 -2
  179. package/lib/trustedApplications/trustedApplications.test.d.ts.map +0 -1
  180. package/lib/trustedApplications/trustedApplications.test.js +0 -64
  181. package/lib/trustedApplications/trustedApplications.test.js.map +0 -1
  182. package/lib/trustedApplications/trustedApplications.utils.js +0 -34
  183. package/lib/trustedApplications/trustedApplications.utils.js.map +0 -1
  184. package/lib/trustedApplications/trustedApplications.view.js +0 -87
  185. package/lib/trustedApplications/trustedApplications.view.js.map +0 -1
  186. package/lib/types.js +0 -6
  187. package/lib/types.js.map +0 -1
  188. package/lib/ui/pane.js +0 -148
  189. package/lib/ui/pane.js.map +0 -1
  190. package/lib/versionInfo.d.ts +0 -34
  191. package/lib/versionInfo.d.ts.map +0 -1
  192. package/lib/versionInfo.js +0 -39
  193. package/lib/versionInfo.js.map +0 -1
  194. package/lib/video/videoPane.js +0 -44
  195. package/lib/video/videoPane.js.map +0 -1
  196. package/src/RDFXMLPane.js +0 -60
  197. package/src/argument/argumentPane.js +0 -65
  198. package/src/argument/argument_icon_v04.jpg +0 -0
  199. package/src/argument/icon_argument.png +0 -0
  200. package/src/argument/transparentyingyang.png +0 -0
  201. package/src/attach/attachPane.js +0 -508
  202. package/src/attach/tbl-paperclip-128.png +0 -0
  203. package/src/attach/tbl-paperclip-22.png +0 -0
  204. package/src/attach/tbl-paperclip-22a.png +0 -0
  205. package/src/audio/audioPane.js +0 -197
  206. package/src/chatPreferencesForm.ttl +0 -12
  207. package/src/classInstancePane.js +0 -110
  208. package/src/dashboard/basicPreferences.ts +0 -201
  209. package/src/dashboard/dashboardPane.ts +0 -83
  210. package/src/dashboard/homepage.ts +0 -72
  211. package/src/dashboard/languages/codes.html +0 -8611
  212. package/src/dashboard/languages/codes.xml +0 -3563
  213. package/src/dashboard/languages/codes2.txt +0 -170
  214. package/src/dashboard/languages/foo +0 -70
  215. package/src/dashboard/languages/foo.ttl +0 -0
  216. package/src/dashboard/languages/get-language-names.sh +0 -12
  217. package/src/dashboard/ontologyData.ttl +0 -35
  218. package/src/dashboard/preferencesFormText.ttl +0 -18
  219. package/src/dataContentPane.js +0 -290
  220. package/src/defaultPane.js +0 -102
  221. package/src/dokieli/Makefile +0 -6
  222. package/src/dokieli/dokieliPane.js +0 -190
  223. package/src/dokieli/new.html +0 -30
  224. package/src/dokieli/new.js +0 -22
  225. package/src/form/form-22.png +0 -0
  226. package/src/form/form-b-22.png +0 -0
  227. package/src/form/form.graffle +0 -0
  228. package/src/form/form.png +0 -0
  229. package/src/form/pane.js +0 -217
  230. package/src/form/psuedocode-notes.txt +0 -57
  231. package/src/global.d.ts +0 -4
  232. package/src/home/homePane.ts +0 -72
  233. package/src/humanReadablePane.js +0 -150
  234. package/src/imagePane.js +0 -75
  235. package/src/index.ts +0 -71
  236. package/src/internal/internalPane.ts +0 -263
  237. package/src/mainPage/footer.ts +0 -19
  238. package/src/mainPage/header.ts +0 -79
  239. package/src/mainPage/index.ts +0 -20
  240. package/src/meeting/Makefile +0 -3
  241. package/src/meeting/test/meeting1/Actions/actions.ttl +0 -14
  242. package/src/meeting/test/meeting1/Actions/config.ttl +0 -16
  243. package/src/meeting/test/meeting1/Actions/state.ttl +0 -30
  244. package/src/meeting/test/meeting1/Schedule/details.ttl +0 -34
  245. package/src/meeting/test/meeting1/Schedule/details.ttl.acl +0 -20
  246. package/src/meeting/test/meeting1/Schedule/forms.ttl +0 -75
  247. package/src/meeting/test/meeting1/Schedule/forms.ttl.acl +0 -20
  248. package/src/meeting/test/meeting1/Schedule/index.html +0 -72
  249. package/src/meeting/test/meeting1/Schedule/index.html.acl +0 -20
  250. package/src/meeting/test/meeting1/Schedule/results.ttl +0 -15
  251. package/src/meeting/test/meeting1/Schedule/results.ttl.acl +0 -20
  252. package/src/meeting/test/meeting1/SharedNotes/pad.ttl +0 -23
  253. package/src/meeting/test/meeting1/chat/chat.ttl +0 -1
  254. package/src/meeting/test/meeting1/details.ttl +0 -35
  255. package/src/meeting/test/meeting1/pad/pad.ttl +0 -16
  256. package/src/microblogPane/mbStyle.css +0 -267
  257. package/src/microblogPane/microblogPane.js +0 -1412
  258. package/src/n3Pane.js +0 -56
  259. package/src/outline/context.ts +0 -21
  260. package/src/outline/manager.js +0 -2384
  261. package/src/outline/manager.test.ts +0 -189
  262. package/src/outline/outlineIcons.js +0 -160
  263. package/src/outline/propertyViews.test.ts +0 -36
  264. package/src/outline/propertyViews.ts +0 -37
  265. package/src/outline/queryByExample.js +0 -296
  266. package/src/outline/userInput.js +0 -2373
  267. package/src/outline/viewAsImage.ts +0 -12
  268. package/src/outline/viewAsMbox.ts +0 -14
  269. package/src/pad/images/ColourOff.ai +2 -872
  270. package/src/pad/images/ColourOff.png +0 -0
  271. package/src/pad/images/ColourOn.ai +1 -935
  272. package/src/pad/images/ColourOn.png +0 -0
  273. package/src/pad/padPane.ts +0 -559
  274. package/src/playlist/playlistPane.js +0 -161
  275. package/src/registerPanes.js +0 -147
  276. package/src/schedule/Makefile +0 -6
  277. package/src/schedule/formsForSchedule.js +0 -117
  278. package/src/schedule/formsForSchedule.ttl +0 -115
  279. package/src/schedule/schedulePane.js +0 -1201
  280. package/src/sharing/sharingPane.ts +0 -49
  281. package/src/slideshow/slideshowPane.js +0 -80
  282. package/src/socialPane.js +0 -523
  283. package/src/style/tabbedtab.css +0 -1347
  284. package/src/tabbed/tabbedPane.ts +0 -60
  285. package/src/tableViewPane.js +0 -51
  286. package/src/test-import-export/common.js +0 -6
  287. package/src/test-import-export/edit-importer.js +0 -20
  288. package/src/test-import-export/testImportExport.js +0 -0
  289. package/src/transaction/068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  290. package/src/transaction/075988-3d-transparent-glass-icon-business-currency-british-pound-sc35.png +0 -0
  291. package/src/transaction/22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  292. package/src/transaction/pane.js +0 -629
  293. package/src/transaction/period.js +0 -374
  294. package/src/transaction/thumbs_075987-3d-transparent-glass-icon-business-creditcard2.png +0 -0
  295. package/src/transaction/thumbs_075989-3d-transparent-glass-icon-business-currency-cent-sc35.png +0 -0
  296. package/src/trip/tripPane.js +0 -176
  297. package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +0 -176
  298. package/src/trustedApplications/trustedApplications.dom.ts +0 -276
  299. package/src/trustedApplications/trustedApplications.test.ts +0 -82
  300. package/src/trustedApplications/trustedApplications.utils.ts +0 -51
  301. package/src/trustedApplications/trustedApplications.view.ts +0 -80
  302. package/src/types.ts +0 -34
  303. package/src/ui/22-builder.png +0 -0
  304. package/src/ui/builder.graffle +0 -0
  305. package/src/ui/builder.png +0 -0
  306. package/src/ui/builder2.png +0 -0
  307. package/src/ui/pane.js +0 -226
  308. package/src/versionInfo.ts +0 -32
  309. package/src/video/videoPane.js +0 -44
  310. package/timestamp.sh +0 -13
  311. package/travis/bumpversion.js +0 -29
  312. package/tsconfig.json +0 -78
  313. package/typings/raw-loader.d.ts +0 -4
  314. package/typings/solid-namespace/index.d.ts +0 -9
  315. package/webpack.config.js +0 -41
  316. /package/{lib → dist}/dashboard/basicPreferences.d.ts +0 -0
  317. /package/{lib → dist}/dashboard/basicPreferences.d.ts.map +0 -0
  318. /package/{lib → dist}/dashboard/dashboardPane.d.ts +0 -0
  319. /package/{lib → dist}/dashboard/dashboardPane.d.ts.map +0 -0
  320. /package/{lib → dist}/dashboard/homepage.d.ts +0 -0
  321. /package/{lib → dist}/dashboard/homepage.d.ts.map +0 -0
  322. /package/{lib → dist}/home/homePane.d.ts +0 -0
  323. /package/{lib → dist}/home/homePane.d.ts.map +0 -0
  324. /package/{lib → dist}/index.d.ts +0 -0
  325. /package/{lib → dist}/index.d.ts.map +0 -0
  326. /package/{lib → dist}/internal/internalPane.d.ts +0 -0
  327. /package/{lib → dist}/internal/internalPane.d.ts.map +0 -0
  328. /package/{lib → dist}/mainPage/footer.d.ts +0 -0
  329. /package/{lib → dist}/mainPage/footer.d.ts.map +0 -0
  330. /package/{lib → dist}/mainPage/header.d.ts +0 -0
  331. /package/{lib → dist}/mainPage/header.d.ts.map +0 -0
  332. /package/{lib → dist}/mainPage/index.d.ts +0 -0
  333. /package/{lib → dist}/outline/context.d.ts +0 -0
  334. /package/{lib → dist}/outline/context.d.ts.map +0 -0
  335. /package/{lib → dist}/outline/propertyViews.d.ts +0 -0
  336. /package/{lib → dist}/outline/propertyViews.d.ts.map +0 -0
  337. /package/{lib → dist}/outline/viewAsImage.d.ts +0 -0
  338. /package/{lib → dist}/outline/viewAsImage.d.ts.map +0 -0
  339. /package/{lib → dist}/outline/viewAsMbox.d.ts +0 -0
  340. /package/{lib → dist}/outline/viewAsMbox.d.ts.map +0 -0
  341. /package/{lib → dist}/pad/padPane.d.ts +0 -0
  342. /package/{lib → dist}/pad/padPane.d.ts.map +0 -0
  343. /package/{lib → dist}/sharing/sharingPane.d.ts +0 -0
  344. /package/{lib → dist}/sharing/sharingPane.d.ts.map +0 -0
  345. /package/{lib → dist}/tabbed/tabbedPane.d.ts +0 -0
  346. /package/{lib → dist}/tabbed/tabbedPane.d.ts.map +0 -0
  347. /package/{lib → dist}/trustedApplications/trustedApplications.dom.d.ts +0 -0
  348. /package/{lib → dist}/trustedApplications/trustedApplications.dom.d.ts.map +0 -0
  349. /package/{lib → dist}/trustedApplications/trustedApplications.utils.d.ts +0 -0
  350. /package/{lib → dist}/trustedApplications/trustedApplications.utils.d.ts.map +0 -0
  351. /package/{lib → dist}/trustedApplications/trustedApplications.view.d.ts +0 -0
  352. /package/{lib → dist}/trustedApplications/trustedApplications.view.d.ts.map +0 -0
  353. /package/{lib → dist}/types.d.ts +0 -0
  354. /package/{lib → dist}/types.d.ts.map +0 -0
@@ -1,1032 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _solidLogic = require("solid-logic");
9
- var UI = _interopRequireWildcard(require("solid-ui"));
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _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); }
11
- /*
12
- Microblog pane
13
- Charles McKenzie <charles2@mit.edu>
14
- */
15
- /* global alert */
16
- var _default = exports["default"] = {
17
- icon: UI.icons.originalIconBase + 'microblog/microblog.png',
18
- name: 'microblogPane',
19
- label: function label(subject) {
20
- if (_solidLogic.store.whether(subject, UI.ns.rdf('type'), UI.ns.foaf('Person'))) {
21
- return 'Microblog';
22
- } else {
23
- return null;
24
- }
25
- },
26
- render: function render(s, doc) {
27
- //* **********************************************
28
- // NAMESPACES SECTION
29
- //* **********************************************
30
- var SIOC = UI.rdf.Namespace('http://rdfs.org/sioc/ns#');
31
- var SIOCt = UI.rdf.Namespace('http://rdfs.org/sioc/types#');
32
- var FOAF = UI.rdf.Namespace('http://xmlns.com/foaf/0.1/');
33
- var terms = UI.rdf.Namespace('http://purl.org/dc/terms/');
34
- var RDF = UI.ns.rdf;
35
- var kb = _solidLogic.store;
36
- var charCount = 140;
37
- var sf = _solidLogic.store.fetcher;
38
- //* **********************************************
39
- // BACK END
40
- //* **********************************************
41
- var sparqlUpdater = kb.updater;
42
- // ----------------------------------------------
43
- // FOLLOW LIST
44
- // store the URIs of followed users for
45
- // dereferencing the @replies
46
- // ----------------------------------------------
47
- var FollowList = function FollowList(user) {
48
- this.userlist = {};
49
- this.uris = {};
50
- var myFollows = kb.each(kb.sym(user), SIOC('follows'));
51
- for (var mf in myFollows) {
52
- this.add(kb.any(myFollows[mf], SIOC('id')), myFollows[mf].uri);
53
- }
54
- };
55
- FollowList.prototype.add = function (user, uri) {
56
- // add a user to the follows store
57
- if (this.userlist[user]) {
58
- if (!(uri in this.uris)) {
59
- this.userlist[user].push(uri);
60
- this.uris[uri] = '';
61
- }
62
- } else {
63
- this.userlist[user] = [uri];
64
- }
65
- };
66
- FollowList.prototype.selectUser = function (user) {
67
- // check if a user is in the follows list.
68
- if (this.userlist[user]) {
69
- return [this.userlist[user].length === 1, this.userlist[user]];
70
- } else {
71
- // user does not follow any users with this nick
72
- return [false, []];
73
- }
74
- };
75
- // ----------------------------------------------
76
- // FAVORITES
77
- // controls the list of favorites.
78
- // constructor expects a user as uri.
79
- // ----------------------------------------------
80
- var Favorites = function Favorites(user) {
81
- this.favorites = {};
82
- this.favoritesURI = '';
83
- if (!user) {
84
- // TODO is this even useful?
85
- return;
86
- }
87
- this.user = user.split('#')[0];
88
- var created = kb.each(kb.sym(user), SIOC('creator_of'));
89
- for (var c in created) {
90
- if (kb.whether(created[c], RDF('type'), SIOCt('FavouriteThings'))) {
91
- this.favoritesURI = created[c];
92
- var favs = kb.each(created[c], SIOC('container_of'));
93
- for (var f in favs) {
94
- this.favorites[favs[f]] = '';
95
- }
96
- break;
97
- }
98
- }
99
- };
100
- Favorites.prototype.favorited = function (post) {
101
- /* Favorited- returns true if the post is a favorite
102
- false otherwise */
103
- return kb.sym(post) in this.favorites;
104
- };
105
- Favorites.prototype.add = function (post, callback) {
106
- var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user));
107
- sparqlUpdater.insert_statement(batch, function (a, success, c) {
108
- if (success) {
109
- kb.add(batch.subject, batch.predicate, batch.object, batch.why);
110
- }
111
- callback(a, success, c);
112
- });
113
- };
114
- Favorites.prototype.remove = function (post, callback) {
115
- var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user));
116
- sparqlUpdater.delete_statement(batch, function (a, success, c) {
117
- if (success) {
118
- kb.add(batch.subject, batch.predicate, batch.object, batch.why);
119
- }
120
- callback(a, success, c);
121
- });
122
- };
123
- // ----------------------------------------------
124
- // MICROBLOG
125
- // store the uri's of followed users for
126
- // dereferencing the @replies.
127
- // ----------------------------------------------
128
- var Microblog = function Microblog(kb) {
129
- this.kb = kb;
130
-
131
- // attempt to fetch user account from local preferences if just
132
- // in case the user's foaf was not writable. add it to the store
133
- // this will probably need to change.
134
- var theUser = _solidLogic.authn.currentUser();
135
- if (theUser) {
136
- var theAccount = UI.preferences.get('acct');
137
- if (theAccount) {
138
- theAccount = kb.sym(theAccount);
139
- }
140
- if (theUser && theAccount) {
141
- kb.add(theUser, FOAF('holdsAccount'), theAccount, theUser.uri.split('#')[0]);
142
- }
143
- }
144
- };
145
- Microblog.prototype.getUser = function (uri) {
146
- var User = {};
147
- User.name = kb.any(uri, SIOC('name')) ? kb.any(uri, SIOC('name')) : '';
148
- User.avatar = kb.any(uri, SIOC('avatar')) ? kb.any(uri, SIOC('avatar')) : '';
149
- User.id = kb.any(uri, SIOC('id'));
150
- User.sym = uri;
151
- return User;
152
- };
153
- Microblog.prototype.getPost = function (uri) {
154
- var Post = {};
155
- // date ----------
156
- var postLink = new Date(kb.anyValue(uri, terms('created')));
157
- var h = postLink.getHours();
158
- var a = h > 12 ? ' PM' : ' AM';
159
- h = h > 12 ? h - 12 : h;
160
- var m = postLink.getMinutes();
161
- m = m < 10 ? '0' + m : m;
162
- var mo = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
163
- var da = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
164
- var ds = da[postLink.getDay()] + ' ' + postLink.getDate() + ' ' + mo[postLink.getMonth()] + ' ' + postLink.getFullYear();
165
- postLink = h + ':' + m + a + ' on ' + ds;
166
- Post.date = postLink;
167
- // ---------
168
- Post.mentions = '';
169
- Post.message = String(kb.any(uri, SIOC('content')));
170
- Post.creator = kb.any(uri, SIOC('has_creator'));
171
- Post.uri = '';
172
- return Post;
173
- };
174
- Microblog.prototype.gen_random_uri = function (base) {
175
- // generate random uri
176
- var uriNonce = base + '#n' + Math.floor(Math.random() * 10e9);
177
- return kb.sym(uriNonce);
178
- };
179
- Microblog.prototype.statusUpdate = function (statusMsg, callback, replyTo, meta) {
180
- var myUserURI = this.getMyURI();
181
- var myUser = kb.sym(myUserURI.split('#')[0]);
182
- var newPost = this.gen_random_uri(myUser.uri);
183
- var microlist = kb.each(kb.sym(myUserURI), SIOC('creator_of'));
184
- var micro;
185
- for (var microlistelement in microlist) {
186
- if (kb.whether(microlist[microlistelement], RDF('type'), SIOCt('Microblog')) && !kb.whether(microlist[microlistelement], SIOC('topic'), kb.sym(this.getMyURI()))) {
187
- micro = microlist[microlistelement];
188
- break;
189
- }
190
- }
191
-
192
- // generate new post
193
- var batch = [new UI.rdf.Statement(newPost, RDF('type'), SIOCt('MicroblogPost'), myUser), new UI.rdf.Statement(newPost, SIOC('has_creator'), kb.sym(myUserURI), myUser), new UI.rdf.Statement(newPost, SIOC('content'), statusMsg, myUser), new UI.rdf.Statement(newPost, terms('created'), new Date(), myUser), new UI.rdf.Statement(micro, SIOC('container_of'), newPost, myUser)];
194
-
195
- // message replies
196
- if (replyTo) {
197
- batch.push(new UI.rdf.Statement(newPost, SIOC('reply_of'), kb.sym(replyTo), myUser));
198
- }
199
-
200
- // @replies, #hashtags, !groupReplies
201
- for (var r in meta.recipients) {
202
- batch.push(new UI.rdf.Statement(newPost, SIOC('topic'), kb.sym(meta.recipients[r]), myUser));
203
- batch.push(new UI.rdf.Statement(kb.any(), SIOC('container_of'), newPost, myUser));
204
- var mblogs = kb.each(kb.sym(meta.recipients[r]), SIOC('creator_of'));
205
- for (var mbl in mblogs) {
206
- if (kb.whether(mblogs[mbl], SIOC('topic'), kb.sym(meta.recipients[r]))) {
207
- var replyBatch = new UI.rdf.Statement(mblogs[mbl], SIOC('container_of'), newPost, kb.sym(meta.recipients[r].split('#')[0]));
208
- sparqlUpdater.insert_statement(replyBatch);
209
- }
210
- }
211
- }
212
- sparqlUpdater.insert_statement(batch, function (a, b, c) {
213
- callback(a, b, c, batch);
214
- });
215
- };
216
- Microblog.prototype.getMyURI = function () {
217
- var me = _solidLogic.authn.currentUser();
218
- console.log(me);
219
- var myMicroblog = kb.any(kb.sym(me), FOAF('holdsAccount'));
220
- console.log('\n\n' + myMicroblog);
221
- return myMicroblog ? myMicroblog.uri : false;
222
- };
223
- Microblog.prototype.generateNewMB = function (id, name, avatar, loc) {
224
- var host = loc + '/' + id;
225
- var rememberMicroblog = function rememberMicroblog() {
226
- UI.preferences.set('acct', host + '#' + id);
227
- };
228
- var cbgenUserMB = function cbgenUserMB(a, success, c, d) {
229
- if (success) {
230
- alert('Microblog generated at ' + host + '#' + id + 'please add <b>' + host + '</b> to your foaf.');
231
- // mbCancelNewMB() @@TBD
232
- // assume the foaf is not writable and store the microblog to the
233
- // preferences for later retrieval.
234
- // this will probably need to change.
235
- rememberMicroblog();
236
- for (var triple in d) {
237
- kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why);
238
- }
239
- }
240
- };
241
- var genUserMB = [
242
- // user
243
- new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('type'), SIOC('User'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mb'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mbn'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#fav'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('name'), name, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('id'), id, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('label'), id, kb.sym(host)), new UI.rdf.Statement(s, FOAF('holdsAccount'), kb.sym(host + '#' + id), kb.sym(host)),
244
- // microblog
245
- new UI.rdf.Statement(kb.sym(host + '#mb'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mb'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)),
246
- // notification microblog
247
- new UI.rdf.Statement(kb.sym(host + '#mbn'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('topic'), kb.sym(host + '#' + id), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)),
248
- // favorites container
249
- new UI.rdf.Statement(kb.sym(host + '#fav'), RDF('type'), SIOCt('FavouriteThings'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#fav'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host))];
250
- if (avatar) {
251
- // avatar optional
252
- genUserMB.push(new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('avatar'), kb.sym(avatar), kb.sym(host)));
253
- }
254
- sparqlUpdater.insert_statement(genUserMB, cbgenUserMB);
255
- };
256
- var mb = new Microblog(kb);
257
- var myFavorites = new Favorites(mb.getMyURI());
258
- var myFollowList = new FollowList(mb.getMyURI());
259
-
260
- //* **********************************************
261
- // FRONT END FUNCTIONALITY
262
- //* **********************************************
263
- // ----------------------------------------------
264
- // PANE
265
- // User Interface for the Microblog Pane
266
- // ----------------------------------------------
267
- var Pane = function Pane(s, doc, microblogPane) {
268
- var TabManager = function TabManager(doc) {
269
- this.tablist = {};
270
- this.doc = doc;
271
- this.tabView = doc.createElement('ul');
272
- this.tabView.className = 'tabslist';
273
- };
274
- TabManager.prototype.create = function (id, caption, view, isDefault) {
275
- var tab = this.doc.createElement('li');
276
- tab.innerHTML = caption;
277
- if (isDefault) {
278
- tab.className = 'active';
279
- }
280
- tab.id = id;
281
- var change = this.change;
282
- var tablist = this.tablist;
283
- tab.addEventListener('click', function (evt) {
284
- change(evt.target.id, tablist, doc);
285
- }, false);
286
- this.tablist[id] = {
287
- view: view.id,
288
- tab: tab
289
- };
290
- this.tabView.appendChild(tab);
291
- };
292
- TabManager.prototype.getTabView = function () {
293
- return this.tabView;
294
- };
295
- TabManager.prototype.change = function (id, tablist, doc) {
296
- for (var tab in tablist) {
297
- if (tab === id) {
298
- tablist[id].tab.className = 'active';
299
- doc.getElementById(tablist[id].view).className += ' active';
300
- } else {
301
- var view = doc.getElementById(tablist[tab].view);
302
- view.className = view.className.replace(/\w*active\w*/, '');
303
- tablist[tab].tab.className = tablist[id].tab.className.replace(/\w*active\w*/, '');
304
- }
305
- }
306
- };
307
- this.microblogPane = microblogPane;
308
- var accounts = kb.each(s, FOAF('holdsAccount'));
309
- var account;
310
- for (var a in accounts) {
311
- if (kb.whether(accounts[a], RDF('type'), SIOC('User')) && kb.whether(kb.any(accounts[a], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) {
312
- account = accounts[a];
313
- break;
314
- }
315
- }
316
- this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account);
317
- var resourceType = kb.any(s, RDF('type'));
318
- if (resourceType.uri === SIOCt('Microblog').uri || resourceType.uri === SIOCt('MicroblogPost').uri) {
319
- this.thisIsMe = kb.any(s, SIOC('has_creator')).uri === mb.getMyURI();
320
- } else if (resourceType.uri === SIOC('User').uri) {
321
- this.thisIsMe = s.uri === mb.getMyURI();
322
- } else if (resourceType.uri === FOAF('Person').uri) {
323
- var me = _solidLogic.authn.currentUser();
324
- var meUri = me && me.uri;
325
- this.thisIsMe = s.uri === meUri;
326
- } else {
327
- this.thisIsMe = false;
328
- }
329
- this.Tab = new TabManager(doc);
330
- };
331
- Pane.prototype.notify = function (messageString) {
332
- var xmsg = doc.createElement('li');
333
- xmsg.className = 'notify';
334
- xmsg.innerHTML = messageString;
335
- doc.getElementById('notify-container').appendChild(xmsg);
336
- setTimeout(function () {
337
- doc.getElementById('notify-container').removeChild(xmsg);
338
- // delete xmsg;
339
- }, 4000);
340
- };
341
- Pane.prototype.header = function (s, doc) {
342
- var that = this;
343
- function lsFollowUser() {
344
- var myUser = kb.sym(mb.getMyURI());
345
- // var Ifollow = that.Ifollow
346
- var username = that.creator.name;
347
- var mbconfirmFollow = function mbconfirmFollow(uri, success, _msg) {
348
- if (success === true) {
349
- if (!that.Ifollow) {
350
- // prevent duplicate entries from being added to kb (because that was happening)
351
- if (!kb.whether(followMe.subject, followMe.predicate, followMe.object, followMe.why)) {
352
- kb.add(followMe.subject, followMe.predicate, followMe.object, followMe.why);
353
- }
354
- } else {
355
- kb.removeMany(followMe.subject, followMe.predicate, followMe.object, followMe.why);
356
- }
357
- console.log(that.Ifollow);
358
- that.Ifollow = !that.Ifollow;
359
- xfollowButton.disabled = false;
360
- console.log(that.Ifollow);
361
- var followButtonLabel = that.Ifollow ? 'Unfollow ' : 'Follow ';
362
- var doFollow = that.Ifollow ? 'now follow ' : 'no longer follow ';
363
- xfollowButton.value = followButtonLabel + username;
364
- that.notify('You ' + doFollow + username + '.');
365
- }
366
- };
367
- var followMe = new UI.rdf.Statement(myUser, SIOC('follows'), that.creator.sym, myUser);
368
- xfollowButton.disabled = true;
369
- xfollowButton.value = 'Updating...';
370
- if (!that.Ifollow) {
371
- sparqlUpdater.insert_statement(followMe, mbconfirmFollow);
372
- } else {
373
- sparqlUpdater.delete_statement(followMe, mbconfirmFollow);
374
- }
375
- }
376
- var notify = function notify(messageString) {
377
- var xmsg = doc.createElement('li');
378
- xmsg.className = 'notify';
379
- xmsg.innerHTML = messageString;
380
- doc.getElementById('notify-container').appendChild(xmsg);
381
- setTimeout(function () {
382
- doc.getElementById('notify-container').removeChild(xmsg);
383
- // delete xmsg;
384
- }, 4000);
385
- };
386
- var mbCancelNewMB = function mbCancelNewMB(_evt) {
387
- xupdateContainer.removeChild(xupdateContainer.childNodes[xupdateContainer.childNodes.length - 1]);
388
- xcreateNewMB.disabled = false;
389
- };
390
- var lsCreateNewMB = function lsCreateNewMB(_evt) {
391
- // disable the create new microblog button.
392
- // then prefills the information.
393
- xcreateNewMB.disabled = true;
394
- var xcmb = doc.createElement('div');
395
- var xcmbName = doc.createElement('input');
396
- if (kb.whether(s, FOAF('name'))) {
397
- // handle use of FOAF:NAME
398
- xcmbName.value = kb.any(s, FOAF('name'));
399
- } else {
400
- // handle use of family and given name
401
- xcmbName.value = kb.any(s, FOAF('givenname')) ? kb.any(s, FOAF('givenname')) + ' ' : '';
402
- xcmbName.value += kb.any(s, FOAF('family_name')) ? kb.any(s, FOAF('givenname')) : '';
403
- xcmbName.value = kb.any(s, FOAF('givenname')) + ' ' + kb.any(s, FOAF('family_name'));
404
- }
405
- var xcmbId = doc.createElement('input');
406
- xcmbId.value = kb.any(s, FOAF('nick')) ? kb.any(s, FOAF('nick')) : '';
407
- var xcmbAvatar = doc.createElement('input');
408
- if (kb.whether(s, FOAF('img'))) {
409
- // handle use of img
410
- xcmbAvatar.value = kb.any(s, FOAF('img')).uri;
411
- } else {
412
- // otherwise try depiction
413
- xcmbAvatar.value = kb.any(s, FOAF('depiction')) ? kb.any(s, FOAF('depiction')).uri : '';
414
- }
415
- var workspace;
416
- // = kb.any(s,WORKSPACE) //TODO - ADD URI FOR WORKSPACE DEFINITION
417
- var xcmbWritable = doc.createElement('input');
418
- xcmbWritable.value = workspace || 'http://dig.csail.mit.edu/2007/wiki/sandbox'; // @@@
419
- xcmb.innerHTML = "\n <form class =\"createNewMB\" id=\"createNewMB\">\n <p id=\"xcmbname\"><span class=\"\">Name: </span></p>\n <p id=\"xcmbid\">Id: </p>\n <p id=\"xcmbavatar\">Avatar: </p>\n <p id=\"xcmbwritable\">Host my microblog at: </p>\n <input type=\"button\" id=\"mbCancel\" value=\"Cancel\" />\n <input type=\"submit\" id=\"mbCreate\" value=\"Create!\" />\n </form>\n ";
420
- xupdateContainer.appendChild(xcmb);
421
- doc.getElementById('xcmbname').appendChild(xcmbName);
422
- doc.getElementById('xcmbid').appendChild(xcmbId);
423
- doc.getElementById('xcmbavatar').appendChild(xcmbAvatar);
424
- doc.getElementById('xcmbwritable').appendChild(xcmbWritable);
425
- doc.getElementById('mbCancel').addEventListener('click', mbCancelNewMB, false);
426
- doc.getElementById('createNewMB').addEventListener('submit', function () {
427
- mb.generateNewMB(xcmbId.value, xcmbName.value, xcmbAvatar.value, xcmbWritable.value);
428
- }, false);
429
- xcmbName.focus();
430
- };
431
- var mbSubmitPost = function mbSubmitPost() {
432
- var meta = {
433
- recipients: []
434
- };
435
- // user has selected a microblog to post to
436
- if (mb.getMyURI()) {
437
- // let myUser = kb.sym(mb.getMyURI())
438
- // submission callback
439
- var cbconfirmSubmit = function cbconfirmSubmit(uri, success, responseText, d) {
440
- if (success === true) {
441
- for (var triple in d) {
442
- kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why);
443
- }
444
- xupdateSubmit.disabled = false;
445
- xupdateStatus.value = '';
446
- mbLetterCount();
447
- notify('Microblog Updated.');
448
- if (that.thisIsMe) {
449
- doc.getElementById('postNotificationList').insertBefore(that.generatePost(d[0].subject), doc.getElementById('postNotificationList').childNodes[0]);
450
- }
451
- } else {
452
- notify('There was a problem submitting your post.');
453
- }
454
- };
455
- var words = xupdateStatus.value.split(' ');
456
- var mbUpdateWithReplies = function mbUpdateWithReplies() {
457
- xupdateSubmit.disabled = true;
458
- xupdateSubmit.value = 'Updating...';
459
- mb.statusUpdate(xupdateStatus.value, cbconfirmSubmit, xinReplyToContainer.value, meta);
460
- };
461
- var _loop = function _loop() {
462
- if (words[word].match(/@\w+/)) {
463
- var atUser = words[word].replace(/\W/g, '');
464
- var recipient = myFollowList.selectUser(atUser);
465
- if (recipient[0] === true) {
466
- meta.recipients.push(recipient[1][0]);
467
- } else if (recipient[1].length > 1) {
468
- // if multiple users allow the user to choose
469
- var xrecipients = doc.createElement('select');
470
- var xrecipientsSubmit = doc.createElement('input');
471
- xrecipientsSubmit.type = 'button';
472
- xrecipientsSubmit.value = 'Continue';
473
- xrecipientsSubmit.addEventListener('click', function () {
474
- meta.recipients.push(recipient[1][xrecipients.value]);
475
- mbUpdateWithReplies();
476
- xrecipients.parentNode.removeChild(xrecipientsSubmit);
477
- xrecipients.parentNode.removeChild(xrecipients);
478
- }, false);
479
- var recipChoice = function recipChoice(recip, c) {
480
- var name = kb.any(kb.sym(recip), SIOC('name'));
481
- var choice = doc.createElement('option');
482
- choice.value = c;
483
- choice.innerHTML = name;
484
- return choice;
485
- };
486
- for (var r in recipient[1]) {
487
- xrecipients.appendChild(recipChoice(recipient[1][r], r));
488
- }
489
- xupdateContainer.appendChild(xrecipients);
490
- xupdateContainer.appendChild(xrecipientsSubmit);
491
- return {
492
- v: void 0
493
- };
494
- } else {
495
- // no users known or self reference.
496
- if (String(kb.any(kb.sym(mb.getMyURI()), SIOC('id'))).toLowerCase() === atUser.toLowerCase()) {
497
- meta.recipients.push(mb.getMyURI());
498
- } else {
499
- notify('You do not follow ' + atUser + '. Try following ' + atUser + ' before mentioning them.');
500
- return {
501
- v: void 0
502
- };
503
- }
504
- }
505
- }
506
- /* else if(words[word].match(/\#\w+/)){
507
- //hashtag
508
- } else if(words[word].match(/\!\w+/)){
509
- //usergroup
510
- } */
511
- },
512
- _ret;
513
- for (var word in words) {
514
- _ret = _loop();
515
- if (_ret) return _ret.v;
516
- }
517
- mbUpdateWithReplies();
518
- } else {
519
- notify('Please set your microblog first.');
520
- }
521
- };
522
- var mbLetterCount = function mbLetterCount() {
523
- xupdateStatusCounter.innerHTML = charCount - xupdateStatus.value.length;
524
- xupdateStatusCounter.style.color = charCount - xupdateStatus.value.length < 0 ? '#c33' : '';
525
- if (xupdateStatus.value.length === 0) {
526
- xinReplyToContainer.value = '';
527
- xupdateSubmit.value = 'Send';
528
- }
529
- };
530
- // reply viewer
531
- var xviewReply = doc.createElement('ul');
532
- xviewReply.className = 'replyView';
533
- xviewReply.addEventListener('click', function () {
534
- xviewReply.className = 'replyView';
535
- }, false);
536
- this.xviewReply = xviewReply;
537
- var headerContainer = doc.createElement('div');
538
- headerContainer.className = 'header-container';
539
-
540
- // ---create status update box---
541
- var xnotify = doc.createElement('ul');
542
- xnotify.id = 'notify-container';
543
- xnotify.className = 'notify-container';
544
- this.xnotify = xnotify;
545
- var xupdateContainer = doc.createElement('form');
546
- xupdateContainer.className = 'update-container';
547
- xupdateContainer.innerHTML = '<h3>What are you up to?</h3>';
548
- var xinReplyToContainer;
549
- var xupdateStatus;
550
- var xupdateStatusCounter;
551
- var xupdateSubmit;
552
- var xcreateNewMB;
553
- if (mb.getMyURI()) {
554
- xinReplyToContainer = doc.createElement('input');
555
- xinReplyToContainer.id = 'xinReplyToContainer';
556
- xinReplyToContainer.type = 'hidden';
557
- xupdateStatus = doc.createElement('textarea');
558
- xupdateStatus.id = 'xupdateStatus';
559
- xupdateStatusCounter = doc.createElement('span');
560
- xupdateStatusCounter.appendChild(doc.createTextNode(charCount));
561
- xupdateStatus.cols = 30;
562
- xupdateStatus.addEventListener('keyup', mbLetterCount, false);
563
- xupdateStatus.addEventListener('focus', mbLetterCount, false);
564
- xupdateSubmit = doc.createElement('input');
565
- xupdateSubmit.id = 'xupdateSubmit';
566
- xupdateSubmit.type = 'submit';
567
- xupdateSubmit.value = 'Send';
568
- xupdateContainer.appendChild(xinReplyToContainer);
569
- xupdateContainer.appendChild(xupdateStatusCounter);
570
- xupdateContainer.appendChild(xupdateStatus);
571
- xupdateContainer.appendChild(xupdateSubmit);
572
- xupdateContainer.addEventListener('submit', mbSubmitPost, false);
573
- } else {
574
- var xnewUser = doc.createTextNode("Hi, it looks like you don't have a microblog, " + ' would you like to create one? ');
575
- xcreateNewMB = doc.createElement('input');
576
- xcreateNewMB.type = 'button';
577
- xcreateNewMB.value = 'Create a new Microblog';
578
- xcreateNewMB.addEventListener('click', lsCreateNewMB, false);
579
- xupdateContainer.appendChild(xnewUser);
580
- xupdateContainer.appendChild(xcreateNewMB);
581
- }
582
- headerContainer.appendChild(xupdateContainer);
583
- var subheaderContainer = doc.createElement('div');
584
- subheaderContainer.className = 'subheader-container';
585
-
586
- // user header
587
- // this.creator
588
- var creators = kb.each(s, FOAF('holdsAccount'));
589
- var creator;
590
- for (var c in creators) {
591
- if (kb.whether(creators[c], RDF('type'), SIOC('User')) && kb.whether(kb.any(creators[c], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) {
592
- creator = creators[c];
593
- // var mb = kb.sym(creator.uri.split("#")[0]);
594
- // store.fetcher.refresh(mb);
595
- break;
596
- // TODO add support for more than one microblog in same foaf
597
- }
598
- }
599
- var xfollowButton;
600
- if (creator) {
601
- this.creator = mb.getUser(creator);
602
- // ---display avatar, if available ---
603
- if (this.creator.avatar !== '') {
604
- var avatar = doc.createElement('img');
605
- avatar.src = this.creator.avatar.uri;
606
- subheaderContainer.appendChild(avatar);
607
- }
608
- // ---generate name ---
609
- var userName = doc.createElement('h1');
610
- userName.className = 'fn';
611
- userName.appendChild(doc.createTextNode(this.creator.name + ' (' + this.creator.id + ')'));
612
- subheaderContainer.appendChild(userName);
613
- // ---display follow button---
614
- if (!this.thisIsMe && mb.getMyURI()) {
615
- xfollowButton = doc.createElement('input');
616
- xfollowButton.setAttribute('type', 'button');
617
- var followButtonLabel = this.Ifollow ? 'Unfollow ' : 'Follow ';
618
- xfollowButton.value = followButtonLabel + this.creator.name;
619
- xfollowButton.addEventListener('click', lsFollowUser, false);
620
- subheaderContainer.appendChild(xfollowButton);
621
- }
622
- // user header end
623
- // header tabs
624
- var xtabsList = this.Tab.getTabView();
625
- headerContainer.appendChild(subheaderContainer);
626
- headerContainer.appendChild(xtabsList);
627
- }
628
- return headerContainer;
629
- };
630
- Pane.prototype.generatePost = function (post, _me) {
631
- /*
632
- generatePost - Creates and formats microblog posts
633
- post - symbol of the uri the post in question
634
- */
635
- var that = this;
636
- var viewPost = function viewPost(uris) {
637
- var xviewReply = that.xviewReply;
638
- for (var i = 0; i < xviewReply.childNodes.length; i++) {
639
- xviewReply.removeChild(xviewReply.childNodes[0]);
640
- }
641
- var xcloseContainer = doc.createElement('li');
642
- xcloseContainer.className = 'closeContainer';
643
- var xcloseButton = doc.createElement('span');
644
- xcloseButton.innerHTML = '&#215;';
645
- xcloseButton.className = 'closeButton';
646
- xcloseContainer.appendChild(xcloseButton);
647
- xviewReply.appendChild(xcloseContainer);
648
- for (var uri in uris) {
649
- xviewReply.appendChild(that.generatePost(kb.sym(uris[uri]), this.thisIsMe, 'view'));
650
- }
651
- xviewReply.className = 'replyView-active';
652
- that.microblogPane.appendChild(xviewReply);
653
- };
654
- // container for post
655
- var xpost = doc.createElement('li');
656
- xpost.className = 'post';
657
- xpost.setAttribute('id', String(post.uri).split('#')[1]);
658
- var Post = mb.getPost(post);
659
- // username text
660
- // var uname = kb.any(kb.any(post, SIOC('has_creator')), SIOC('id'))
661
- var uholdsaccount = kb.any(undefined, FOAF('holdsAccount'), kb.any(post, SIOC('has_creator')));
662
- var xuname = doc.createElement('a');
663
- xuname.href = uholdsaccount.uri;
664
- xuname.className = 'userLink';
665
- var xunameText = doc.createTextNode(mb.getUser(Post.creator).id);
666
- xuname.appendChild(xunameText);
667
- // user image
668
- var xuavatar = doc.createElement('img');
669
- xuavatar.src = mb.getUser(Post.creator).avatar.uri;
670
- xuavatar.className = 'postAvatar';
671
- // post content
672
- var xpostContent = doc.createElement('blockquote');
673
- var postText = Post.message;
674
- // post date
675
- var xpostLink = doc.createElement('a');
676
- xpostLink.className = 'postLink';
677
- xpostLink.addEventListener('click', function () {
678
- viewPost([post.uri]);
679
- }, false);
680
- xpostLink.id = 'post_' + String(post.uri).split('#')[1];
681
- xpostLink.setAttribute('content', post.uri);
682
- xpostLink.setAttribute('property', 'permalink');
683
- var postLink = doc.createTextNode(Post.date ? Post.date : 'post date unknown');
684
- xpostLink.appendChild(postLink);
685
-
686
- // LINK META DATA (MENTIONS, HASHTAGS, GROUPS)
687
- var mentions = kb.each(post, SIOC('topic'));
688
- var tags = {};
689
- for (var mention in mentions) {
690
- sf.lookUpThing(mentions[mention]);
691
- var id = kb.any(mentions[mention], SIOC('id'));
692
- tags['@' + id] = mentions[mention];
693
- }
694
- var postTags = postText.match(/(@|#|!)\w+/g);
695
- var postFunction = function postFunction() {
696
- var p = postTags.pop();
697
- return tags[p] ? kb.any(undefined, FOAF('holdsAccount'), tags[p]).uri : p;
698
- };
699
- for (var t in tags) {
700
- var person = t.replace(/@/, '');
701
- var replacePerson = RegExp('(@|!|#)(' + person + ')');
702
- postText = postText.replace(replacePerson, '$1<a href="' + postFunction() + '">$2</a>');
703
- }
704
- xpostContent.innerHTML = postText;
705
-
706
- // in reply to logic
707
- // This has the potential to support a post that replies to many messages.
708
- var inReplyTo = kb.each(post, SIOC('reply_of'));
709
- var xreplyTo = doc.createElement('span');
710
- var theReply;
711
- for (var reply in inReplyTo) {
712
- theReply = String(inReplyTo[reply]).replace(/<|>/g, '');
713
- var genReplyTo = function genReplyTo() {
714
- var reply = doc.createElement('a');
715
- reply.innerHTML = ', <b>in reply to</b>';
716
- reply.addEventListener('click', function () {
717
- viewPost([post.uri, theReply]);
718
- return false;
719
- }, false);
720
- return reply;
721
- };
722
- xreplyTo.appendChild(genReplyTo());
723
- }
724
-
725
- // END LINK META DATA
726
- // add the reply to and delete buttons to the interface
727
- var mbReplyTo = function mbReplyTo() {
728
- var id = mb.getUser(Post.creator).id;
729
- var xupdateStatus = doc.getElementById('xupdateStatus');
730
- var xinReplyToContainer = doc.getElementById('xinReplyToContainer');
731
- var xupdateSubmit = doc.getElementById('xupdateSubmit');
732
- xupdateStatus.value = '@' + id + ' ';
733
- xupdateStatus.focus();
734
- xinReplyToContainer.value = post.uri;
735
- xupdateSubmit.value = 'Reply';
736
- };
737
- var xconfirmDeletionDialog;
738
- var mbDeletePost = function mbDeletePost(evt) {
739
- var lsconfirmNo = function lsconfirmNo() {
740
- doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog);
741
- evt.target.disabled = false;
742
- };
743
- var lsconfirmYes = function lsconfirmYes() {
744
- reallyDelete();
745
- doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog);
746
- };
747
- evt.target.disabled = true;
748
- xconfirmDeletionDialog = doc.createElement('li');
749
- xconfirmDeletionDialog.className = 'notify conf';
750
- xconfirmDeletionDialog.innerHTML += '<p>Are you sure you want to delete this post?</p>';
751
- xconfirmDeletionDialog.addEventListener('keyup', function (evt) {
752
- if (evt.keyCode === 27) {
753
- lsconfirmNo();
754
- }
755
- }, false);
756
- var confirmyes = doc.createElement('input');
757
- confirmyes.type = 'button';
758
- confirmyes.className = 'confirm';
759
- confirmyes.value = 'Delete';
760
- confirmyes.addEventListener('click', lsconfirmYes, false);
761
- var confirmno = doc.createElement('input');
762
- confirmno.type = 'button';
763
- confirmno.className = 'confirm';
764
- confirmno.value = 'Cancel';
765
- confirmno.addEventListener('click', lsconfirmNo, false);
766
- xconfirmDeletionDialog.appendChild(confirmno);
767
- xconfirmDeletionDialog.appendChild(confirmyes);
768
- doc.getElementById('notify-container').appendChild(xconfirmDeletionDialog);
769
- confirmno.focus();
770
- var reallyDelete = function reallyDelete() {
771
- // callback after deletion
772
- var mbconfirmDeletePost = function mbconfirmDeletePost(a, success) {
773
- if (success) {
774
- that.notify('Post deleted.');
775
- // update the ui to reflect model changes.
776
- var deleteThisNode = evt.target.parentNode;
777
- deleteThisNode.parentNode.removeChild(deleteThisNode);
778
- kb.removeMany(deleteMe);
779
- } else {
780
- that.notify('Oops, there was a problem, please try again');
781
- evt.target.disabled = true;
782
- }
783
- };
784
- // delete references to post
785
- var deleteContainerOf = function deleteContainerOf(a, success) {
786
- if (success) {
787
- var deleteContainer = kb.statementsMatching(undefined, SIOC('container_of'), kb.sym(doc.getElementById('post_' + evt.target.parentNode.id).getAttribute('content')));
788
- sparqlUpdater.batch_delete_statement(deleteContainer, mbconfirmDeletePost);
789
- } else {
790
- that.notify('Oops, there was a problem, please try again');
791
- evt.target.disabled = false;
792
- }
793
- };
794
- // delete attributes of post
795
- evt.target.disabled = true;
796
- var deleteMe = kb.statementsMatching(kb.sym(doc.getElementById('post_' + evt.target.parentNode.id).getAttribute('content')));
797
- sparqlUpdater.batch_delete_statement(deleteMe, deleteContainerOf);
798
- };
799
- };
800
- var themaker;
801
- var xreplyButton;
802
- var xdeleteButton;
803
- if (mb.getMyURI()) {
804
- // If the microblog in question does not belong to the user,
805
- // display the delete post and reply to post buttons.
806
- themaker = kb.any(post, SIOC('has_creator'));
807
- if (mb.getMyURI() !== themaker.uri) {
808
- xreplyButton = doc.createElement('input');
809
- xreplyButton.type = 'button';
810
- xreplyButton.value = 'reply';
811
- xreplyButton.className = 'reply';
812
- xreplyButton.addEventListener('click', mbReplyTo, false);
813
- } else {
814
- xdeleteButton = doc.createElement('input');
815
- xdeleteButton.type = 'button';
816
- xdeleteButton.value = 'Delete';
817
- xdeleteButton.className = 'reply';
818
- xdeleteButton.addEventListener('click', mbDeletePost, false);
819
- }
820
- }
821
- var mbFavorite = function mbFavorite(evt) {
822
- var nid = evt.target.parentNode.id;
823
- var favpost = doc.getElementById('post_' + nid).getAttribute('content');
824
- xfavorite.className += ' ing';
825
- var cbFavorite = function cbFavorite(a, success, _c, _d) {
826
- if (success) {
827
- xfavorite.className = xfavorite.className.split(' ')[1] === 'ed' ? 'favorit' : 'favorit ed';
828
- }
829
- };
830
- if (!myFavorites.favorited(favpost)) {
831
- myFavorites.add(favpost, cbFavorite);
832
- } else {
833
- myFavorites.remove(favpost, cbFavorite);
834
- }
835
- };
836
- var xfavorite = doc.createElement('a');
837
- xfavorite.innerHTML = '&#9733;';
838
- xfavorite.addEventListener('click', mbFavorite, false);
839
- if (myFavorites.favorited(post.uri)) {
840
- xfavorite.className = 'favorit ed';
841
- } else {
842
- xfavorite.className = 'favorit';
843
- }
844
- // build
845
- xpost.appendChild(xuavatar);
846
- xpost.appendChild(xpostContent);
847
- if (mb.getMyURI()) {
848
- xpost.appendChild(xfavorite);
849
- if (mb.getMyURI() !== themaker.uri) {
850
- xpost.appendChild(xreplyButton);
851
- } else {
852
- xpost.appendChild(xdeleteButton);
853
- }
854
- }
855
- xpost.appendChild(xuname);
856
- xpost.appendChild(xpostLink);
857
- if (inReplyTo !== '') {
858
- xpost.appendChild(xreplyTo);
859
- }
860
- return xpost;
861
- };
862
- Pane.prototype.generatePostList = function (gmbPosts) {
863
- /*
864
- generatePostList - Generate the posts and
865
- display their results on the interface.
866
- */
867
- var postList = doc.createElement('ul');
868
- var postlist = {};
869
- var datelist = [];
870
- for (var post in gmbPosts) {
871
- var postDate = kb.any(gmbPosts[post], terms('created'));
872
- if (postDate) {
873
- datelist.push(postDate);
874
- postlist[postDate] = this.generatePost(gmbPosts[post], this.thisIsMe);
875
- }
876
- }
877
- datelist.sort().reverse();
878
- for (var d in datelist) {
879
- postList.appendChild(postlist[datelist[d]]);
880
- }
881
- return postList;
882
- };
883
- Pane.prototype.followsView = function () {
884
- var getFollowed = function getFollowed(user) {
885
- var userid = kb.any(user, SIOC('id'));
886
- var follow = doc.createElement('li');
887
- follow.className = 'follow';
888
- userid = userid || user.uri;
889
- var fol = kb.any(undefined, FOAF('holdsAccount'), user);
890
- fol = fol ? fol.uri : user.uri;
891
- follow.innerHTML = '<a href="' + fol + '">' + userid + '</a>';
892
- return follow;
893
- };
894
- var xfollows = doc.createElement('div');
895
- xfollows.id = 'xfollows';
896
- xfollows.className = 'followlist-container view-container';
897
- if (this.creator && kb.whether(this.creator.sym, SIOC('follows'))) {
898
- var creatorFollows = kb.each(this.creator.sym, SIOC('follows'));
899
- var xfollowsList = doc.createElement('ul');
900
- for (var thisPerson in creatorFollows) {
901
- xfollowsList.appendChild(getFollowed(creatorFollows[thisPerson]));
902
- }
903
- xfollows.appendChild(xfollowsList);
904
- }
905
- this.Tab.create('tab-follows', 'Follows', xfollows, false);
906
- return xfollows;
907
- };
908
- Pane.prototype.streamView = function (s, doc) {
909
- var postContainer = doc.createElement('div');
910
- postContainer.id = 'postContainer';
911
- postContainer.className = 'post-container view-container active';
912
- var mbPosts = [];
913
- if (kb.whether(s, FOAF('name')) && kb.whether(s, FOAF('holdsAccount'))) {
914
- sf.lookUpThing(kb.any(s, FOAF('holdsAccount')));
915
- var follows = kb.each(kb.any(s, FOAF('holdsAccount')), SIOC('follows'));
916
- for (var f in follows) {
917
- sf.lookUpThing(follows[f]);
918
- // look up people user follows
919
- var smicroblogs = kb.each(follows[f], SIOC('creator_of'));
920
- // get the follows microblogs
921
- for (var smb in smicroblogs) {
922
- sf.lookUpThing(smicroblogs[smb]);
923
- if (kb.whether(smicroblogs[smb], SIOC('topic'), follows[f])) {
924
- continue;
925
- } else {
926
- mbPosts = mbPosts.concat(kb.each(smicroblogs[smb], SIOC('container_of')));
927
- }
928
- }
929
- }
930
- }
931
- if (mbPosts.length > 0) {
932
- var postList = this.generatePostList(mbPosts);
933
- // generate stream
934
- postList.id = 'postList';
935
- postList.className = 'postList';
936
- postContainer.appendChild(postList);
937
- }
938
- this.Tab.create('tab-stream', 'By Follows', postContainer, true);
939
- return postContainer;
940
- };
941
- Pane.prototype.notificationsView = function (s, doc) {
942
- var postNotificationContainer = doc.createElement('div');
943
- postNotificationContainer.id = 'postNotificationContainer';
944
- postNotificationContainer.className = 'notification-container view-container';
945
- var postMentionContainer = doc.createElement('div');
946
- postMentionContainer.id = 'postMentionContainer';
947
- postMentionContainer.className = 'mention-container view-container';
948
- var mbnPosts = [];
949
- var mbmPosts = [];
950
- // get mbs that I am the creator of.
951
- var theUser = kb.any(s, FOAF('holdsAccount'));
952
- var user = kb.any(theUser, SIOC('id'));
953
- var microblogs = kb.each(theUser, SIOC('creator_of'));
954
- for (var mbm in microblogs) {
955
- sf.lookUpThing(microblogs[mbm]);
956
- if (kb.whether(microblogs[mbm], SIOC('topic'), theUser)) {
957
- mbmPosts = mbmPosts.concat(kb.each(microblogs[mbm], SIOC('container_of')));
958
- } else {
959
- if (kb.whether(microblogs[mbm], RDF('type'), SIOCt('Microblog'))) {
960
- mbnPosts = mbnPosts.concat(kb.each(microblogs[mbm], SIOC('container_of')));
961
- }
962
- }
963
- }
964
- var postNotificationList = this.generatePostList(mbnPosts);
965
- postNotificationList.id = 'postNotificationList';
966
- postNotificationList.className = 'postList';
967
- postNotificationContainer.appendChild(postNotificationList);
968
- var postMentionList = this.generatePostList(mbmPosts);
969
- postMentionList.id = 'postMentionList';
970
- postMentionList.className = 'postList';
971
- postMentionContainer.appendChild(postMentionList);
972
- this.postMentionContainer = postMentionContainer;
973
- this.postNotificationContainer = postNotificationContainer;
974
- this.Tab.create('tab-by-user', 'By ' + user, postNotificationContainer, false);
975
- this.Tab.create('tab-at-user', '@' + user, postMentionContainer, false);
976
- };
977
- Pane.prototype.build = function () {
978
- var microblogPane = this.microblogPane;
979
- this.headerContainer = this.header(s, doc);
980
- this.postContainer = this.streamView(s, doc);
981
- this.notificationsView(s, doc);
982
- this.xfollows = this.followsView();
983
- microblogPane.className = 'ppane';
984
- microblogPane.appendChild(this.xviewReply);
985
- microblogPane.appendChild(this.xnotify);
986
- microblogPane.appendChild(this.headerContainer);
987
- if (this.xfollows !== undefined) {
988
- microblogPane.appendChild(this.xfollows);
989
- }
990
- microblogPane.appendChild(this.postContainer);
991
- microblogPane.appendChild(this.postNotificationContainer);
992
- microblogPane.appendChild(this.postMentionContainer);
993
- };
994
- var microblogpane = doc.createElement('div');
995
- // var getusersfollows = function(uri){
996
- // var follows = new Object();
997
- // var followsa = {follows:0, matches:0};
998
- // var accounts = kb.each(s, FOAF("holdsAccount"));
999
- // //get all of the accounts that a person holds
1000
- // for (var acct in accounts){
1001
- // var account = accounts[acct].uri;
1002
- // var act = kb.each(kb.sym(account),SIOC("follows"));
1003
- // for (var a in act){
1004
- // var thisuri = act[a].uri.split("#")[0];
1005
- // if (!follows[thisuri]){followsa.follows+=1;}
1006
- // follows[thisuri] =true;
1007
- // }
1008
- // }
1009
- //
1010
- // var buildPaneUI = function(uri){
1011
- // followsa.matches = (follows[uri]) ? followsa.matches+1: followsa.matches;
1012
- // console.log(follows.toSource());
1013
- // if(followsa.follows == followsa.matches ){
1014
- var ppane = new Pane(s, doc, microblogpane);
1015
- ppane.build();
1016
- // return false;
1017
- // }
1018
- // else{
1019
- // return true;
1020
- // }
1021
- // }
1022
- // sf.addCallback('done',buildPaneUI);
1023
- // sf.addCallback('fail',buildPaneUI);
1024
- // //fetch each of the followers
1025
- // for (var f in follows){
1026
- // sf.refresh(kb.sym(f));
1027
- // }
1028
- // }(s);
1029
- return microblogpane;
1030
- }
1031
- };
1032
- //# sourceMappingURL=microblogPane.js.map