solid-panes 3.7.2-ee5abebd → 3.7.2

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/Documentation/VisualLanguage.html +538 -0
  2. package/Documentation/conventions.md +333 -0
  3. package/coverage/clover.xml +152 -0
  4. package/coverage/coverage-final.json +6 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +131 -0
  9. package/coverage/lcov-report/outline/index.html +161 -0
  10. package/coverage/lcov-report/outline/outlineIcons.js.html +565 -0
  11. package/coverage/lcov-report/outline/propertyViews.ts.html +196 -0
  12. package/coverage/lcov-report/outline/viewAsImage.ts.html +121 -0
  13. package/coverage/lcov-report/outline/viewAsMbox.ts.html +127 -0
  14. package/coverage/lcov-report/prettify.css +1 -0
  15. package/coverage/lcov-report/prettify.js +2 -0
  16. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  17. package/coverage/lcov-report/sorter.js +210 -0
  18. package/coverage/lcov-report/trustedApplications/index.html +116 -0
  19. package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +238 -0
  20. package/coverage/lcov.info +204 -0
  21. package/dev/index.html +28 -0
  22. package/dev/loader.ts +91 -0
  23. package/dev/pane/index.ts +10 -0
  24. package/doc/images/panes-for-classes.epgz +0 -0
  25. package/doc/images/panes-for-classes.svg +609 -0
  26. package/eslint.config.mjs +34 -0
  27. package/jest.config.js +27 -0
  28. package/jest.setup.ts +4 -0
  29. package/lib/RDFXMLPane.js +59 -0
  30. package/lib/RDFXMLPane.js.map +1 -0
  31. package/lib/argument/argumentPane.js +62 -0
  32. package/lib/argument/argumentPane.js.map +1 -0
  33. package/lib/attach/attachPane.js +404 -0
  34. package/lib/attach/attachPane.js.map +1 -0
  35. package/lib/audio/audioPane.js +183 -0
  36. package/lib/audio/audioPane.js.map +1 -0
  37. package/lib/classInstancePane.js +93 -0
  38. package/lib/classInstancePane.js.map +1 -0
  39. package/lib/dashboard/basicPreferences.js +229 -0
  40. package/lib/dashboard/basicPreferences.js.map +1 -0
  41. package/lib/dashboard/dashboardPane.js +73 -0
  42. package/lib/dashboard/dashboardPane.js.map +1 -0
  43. package/lib/dashboard/homepage.js +86 -0
  44. package/lib/dashboard/homepage.js.map +1 -0
  45. package/lib/dataContentPane.js +259 -0
  46. package/lib/dataContentPane.js.map +1 -0
  47. package/lib/defaultPane.js +76 -0
  48. package/lib/defaultPane.js.map +1 -0
  49. package/lib/dokieli/dokieliPane.js +173 -0
  50. package/lib/dokieli/dokieliPane.js.map +1 -0
  51. package/lib/dokieli/new.js +9 -0
  52. package/lib/dokieli/new.js.map +1 -0
  53. package/lib/form/pane.js +186 -0
  54. package/lib/form/pane.js.map +1 -0
  55. package/lib/global.d.js +2 -0
  56. package/lib/global.d.js.map +1 -0
  57. package/lib/home/homePane.js +91 -0
  58. package/lib/home/homePane.js.map +1 -0
  59. package/lib/humanReadablePane.js +138 -0
  60. package/lib/humanReadablePane.js.map +1 -0
  61. package/lib/imagePane.js +71 -0
  62. package/lib/imagePane.js.map +1 -0
  63. package/lib/index.js +112 -0
  64. package/lib/index.js.map +1 -0
  65. package/lib/internal/internalPane.js +184 -0
  66. package/lib/internal/internalPane.js.map +1 -0
  67. package/lib/mainPage/footer.js +22 -0
  68. package/lib/mainPage/footer.js.map +1 -0
  69. package/lib/mainPage/header.js +152 -0
  70. package/lib/mainPage/header.js.map +1 -0
  71. package/{dist → lib}/mainPage/index.d.ts.map +1 -1
  72. package/lib/mainPage/index.js +42 -0
  73. package/lib/mainPage/index.js.map +1 -0
  74. package/lib/microblogPane/microblogPane.js +1032 -0
  75. package/lib/microblogPane/microblogPane.js.map +1 -0
  76. package/lib/n3Pane.js +57 -0
  77. package/lib/n3Pane.js.map +1 -0
  78. package/lib/outline/context.js +19 -0
  79. package/lib/outline/context.js.map +1 -0
  80. package/lib/outline/manager.js +2264 -0
  81. package/lib/outline/manager.js.map +1 -0
  82. package/lib/outline/manager.test.d.ts +2 -0
  83. package/lib/outline/manager.test.d.ts.map +1 -0
  84. package/lib/outline/manager.test.js +210 -0
  85. package/lib/outline/manager.test.js.map +1 -0
  86. package/lib/outline/outlineIcons.js +128 -0
  87. package/lib/outline/outlineIcons.js.map +1 -0
  88. package/lib/outline/propertyViews.js +44 -0
  89. package/lib/outline/propertyViews.js.map +1 -0
  90. package/lib/outline/propertyViews.test.d.ts +2 -0
  91. package/lib/outline/propertyViews.test.d.ts.map +1 -0
  92. package/lib/outline/propertyViews.test.js +27 -0
  93. package/lib/outline/propertyViews.test.js.map +1 -0
  94. package/lib/outline/queryByExample.js +286 -0
  95. package/lib/outline/queryByExample.js.map +1 -0
  96. package/lib/outline/userInput.js +1817 -0
  97. package/lib/outline/userInput.js.map +1 -0
  98. package/lib/outline/viewAsImage.js +17 -0
  99. package/lib/outline/viewAsImage.js.map +1 -0
  100. package/{dist → lib}/outline/viewAsMbox.js +14 -4
  101. package/lib/outline/viewAsMbox.js.map +1 -0
  102. package/lib/pad/padPane.js +417 -0
  103. package/lib/pad/padPane.js.map +1 -0
  104. package/lib/playlist/playlistPane.js +125 -0
  105. package/lib/playlist/playlistPane.js.map +1 -0
  106. package/lib/registerPanes.js +146 -0
  107. package/lib/registerPanes.js.map +1 -0
  108. package/lib/schedule/formsForSchedule.js +8 -0
  109. package/lib/schedule/formsForSchedule.js.map +1 -0
  110. package/lib/schedule/schedulePane.js +895 -0
  111. package/lib/schedule/schedulePane.js.map +1 -0
  112. package/lib/sharing/sharingPane.js +49 -0
  113. package/lib/sharing/sharingPane.js.map +1 -0
  114. package/lib/slideshow/slideshowPane.js +84 -0
  115. package/lib/slideshow/slideshowPane.js.map +1 -0
  116. package/lib/socialPane.js +431 -0
  117. package/lib/socialPane.js.map +1 -0
  118. package/lib/tabbed/tabbedPane.js +72 -0
  119. package/lib/tabbed/tabbedPane.js.map +1 -0
  120. package/lib/tableViewPane.js +58 -0
  121. package/lib/tableViewPane.js.map +1 -0
  122. package/lib/test-import-export/common.js +12 -0
  123. package/lib/test-import-export/common.js.map +1 -0
  124. package/lib/test-import-export/edit-importer.js +25 -0
  125. package/lib/test-import-export/edit-importer.js.map +1 -0
  126. package/lib/test-import-export/testImportExport.js +2 -0
  127. package/lib/test-import-export/testImportExport.js.map +1 -0
  128. package/lib/transaction/pane.js +479 -0
  129. package/lib/transaction/pane.js.map +1 -0
  130. package/lib/transaction/period.js +325 -0
  131. package/lib/transaction/period.js.map +1 -0
  132. package/lib/trip/tripPane.js +176 -0
  133. package/lib/trip/tripPane.js.map +1 -0
  134. package/lib/trustedApplications/trustedApplications.dom.js +177 -0
  135. package/lib/trustedApplications/trustedApplications.dom.js.map +1 -0
  136. package/lib/trustedApplications/trustedApplications.test.d.ts +2 -0
  137. package/lib/trustedApplications/trustedApplications.test.d.ts.map +1 -0
  138. package/lib/trustedApplications/trustedApplications.test.js +64 -0
  139. package/lib/trustedApplications/trustedApplications.test.js.map +1 -0
  140. package/lib/trustedApplications/trustedApplications.utils.js +34 -0
  141. package/lib/trustedApplications/trustedApplications.utils.js.map +1 -0
  142. package/lib/trustedApplications/trustedApplications.view.js +87 -0
  143. package/lib/trustedApplications/trustedApplications.view.js.map +1 -0
  144. package/lib/types.js +6 -0
  145. package/lib/types.js.map +1 -0
  146. package/lib/ui/pane.js +148 -0
  147. package/lib/ui/pane.js.map +1 -0
  148. package/lib/versionInfo.d.ts +34 -0
  149. package/lib/versionInfo.d.ts.map +1 -0
  150. package/lib/versionInfo.js +39 -0
  151. package/lib/versionInfo.js.map +1 -0
  152. package/lib/video/videoPane.js +44 -0
  153. package/lib/video/videoPane.js.map +1 -0
  154. package/package.json +14 -25
  155. package/src/RDFXMLPane.js +60 -0
  156. package/src/argument/argumentPane.js +65 -0
  157. package/src/argument/argument_icon_v04.jpg +0 -0
  158. package/src/argument/icon_argument.png +0 -0
  159. package/src/argument/transparentyingyang.png +0 -0
  160. package/src/attach/attachPane.js +508 -0
  161. package/src/attach/tbl-paperclip-128.png +0 -0
  162. package/src/attach/tbl-paperclip-22.png +0 -0
  163. package/src/attach/tbl-paperclip-22a.png +0 -0
  164. package/src/audio/audioPane.js +197 -0
  165. package/src/chatPreferencesForm.ttl +12 -0
  166. package/src/classInstancePane.js +110 -0
  167. package/src/dashboard/basicPreferences.ts +201 -0
  168. package/src/dashboard/dashboardPane.ts +83 -0
  169. package/src/dashboard/homepage.ts +72 -0
  170. package/src/dashboard/languages/codes.html +8611 -0
  171. package/src/dashboard/languages/codes.xml +3563 -0
  172. package/src/dashboard/languages/codes2.txt +170 -0
  173. package/src/dashboard/languages/foo +70 -0
  174. package/src/dashboard/languages/foo.ttl +0 -0
  175. package/src/dashboard/languages/get-language-names.sh +12 -0
  176. package/src/dashboard/ontologyData.ttl +35 -0
  177. package/src/dashboard/preferencesFormText.ttl +18 -0
  178. package/src/dataContentPane.js +290 -0
  179. package/src/defaultPane.js +102 -0
  180. package/src/dokieli/Makefile +6 -0
  181. package/src/dokieli/dokieliPane.js +190 -0
  182. package/src/dokieli/new.html +30 -0
  183. package/src/dokieli/new.js +22 -0
  184. package/src/form/form-22.png +0 -0
  185. package/src/form/form-b-22.png +0 -0
  186. package/src/form/form.graffle +0 -0
  187. package/src/form/form.png +0 -0
  188. package/src/form/pane.js +217 -0
  189. package/src/form/psuedocode-notes.txt +57 -0
  190. package/src/global.d.ts +4 -0
  191. package/src/home/homePane.ts +72 -0
  192. package/src/humanReadablePane.js +150 -0
  193. package/src/imagePane.js +75 -0
  194. package/src/index.ts +71 -0
  195. package/src/internal/internalPane.ts +263 -0
  196. package/src/mainPage/footer.ts +19 -0
  197. package/src/mainPage/header.ts +79 -0
  198. package/src/mainPage/index.ts +20 -0
  199. package/src/meeting/Makefile +3 -0
  200. package/src/meeting/test/meeting1/Actions/actions.ttl +14 -0
  201. package/src/meeting/test/meeting1/Actions/config.ttl +16 -0
  202. package/src/meeting/test/meeting1/Actions/state.ttl +30 -0
  203. package/src/meeting/test/meeting1/Schedule/details.ttl +34 -0
  204. package/src/meeting/test/meeting1/Schedule/details.ttl.acl +20 -0
  205. package/src/meeting/test/meeting1/Schedule/forms.ttl +75 -0
  206. package/src/meeting/test/meeting1/Schedule/forms.ttl.acl +20 -0
  207. package/src/meeting/test/meeting1/Schedule/index.html +72 -0
  208. package/src/meeting/test/meeting1/Schedule/index.html.acl +20 -0
  209. package/src/meeting/test/meeting1/Schedule/results.ttl +15 -0
  210. package/src/meeting/test/meeting1/Schedule/results.ttl.acl +20 -0
  211. package/src/meeting/test/meeting1/SharedNotes/pad.ttl +23 -0
  212. package/src/meeting/test/meeting1/chat/chat.ttl +1 -0
  213. package/src/meeting/test/meeting1/details.ttl +35 -0
  214. package/src/meeting/test/meeting1/pad/pad.ttl +16 -0
  215. package/src/microblogPane/mbStyle.css +267 -0
  216. package/src/microblogPane/microblogPane.js +1412 -0
  217. package/src/n3Pane.js +56 -0
  218. package/src/outline/context.ts +21 -0
  219. package/src/outline/manager.js +2384 -0
  220. package/src/outline/manager.test.ts +189 -0
  221. package/src/outline/outlineIcons.js +160 -0
  222. package/src/outline/propertyViews.test.ts +36 -0
  223. package/src/outline/propertyViews.ts +37 -0
  224. package/src/outline/queryByExample.js +296 -0
  225. package/src/outline/userInput.js +2373 -0
  226. package/src/outline/viewAsImage.ts +12 -0
  227. package/src/outline/viewAsMbox.ts +14 -0
  228. package/src/pad/images/ColourOff.ai +873 -1
  229. package/src/pad/images/ColourOff.png +0 -0
  230. package/src/pad/images/ColourOn.ai +934 -2
  231. package/src/pad/images/ColourOn.png +0 -0
  232. package/src/pad/padPane.ts +559 -0
  233. package/src/playlist/playlistPane.js +161 -0
  234. package/src/registerPanes.js +147 -0
  235. package/src/schedule/Makefile +6 -0
  236. package/src/schedule/formsForSchedule.js +117 -0
  237. package/src/schedule/formsForSchedule.ttl +115 -0
  238. package/src/schedule/schedulePane.js +1201 -0
  239. package/src/sharing/sharingPane.ts +49 -0
  240. package/src/slideshow/slideshowPane.js +80 -0
  241. package/src/socialPane.js +523 -0
  242. package/src/style/tabbedtab.css +1347 -0
  243. package/src/tabbed/tabbedPane.ts +60 -0
  244. package/src/tableViewPane.js +51 -0
  245. package/src/test-import-export/common.js +6 -0
  246. package/src/test-import-export/edit-importer.js +20 -0
  247. package/src/test-import-export/testImportExport.js +0 -0
  248. package/src/transaction/068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  249. package/src/transaction/075988-3d-transparent-glass-icon-business-currency-british-pound-sc35.png +0 -0
  250. package/src/transaction/22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  251. package/src/transaction/pane.js +629 -0
  252. package/src/transaction/period.js +374 -0
  253. package/src/transaction/thumbs_075987-3d-transparent-glass-icon-business-creditcard2.png +0 -0
  254. package/src/transaction/thumbs_075989-3d-transparent-glass-icon-business-currency-cent-sc35.png +0 -0
  255. package/src/trip/tripPane.js +176 -0
  256. package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +176 -0
  257. package/src/trustedApplications/trustedApplications.dom.ts +276 -0
  258. package/src/trustedApplications/trustedApplications.test.ts +82 -0
  259. package/src/trustedApplications/trustedApplications.utils.ts +51 -0
  260. package/src/trustedApplications/trustedApplications.view.ts +80 -0
  261. package/src/types.ts +34 -0
  262. package/src/ui/22-builder.png +0 -0
  263. package/src/ui/builder.graffle +0 -0
  264. package/src/ui/builder.png +0 -0
  265. package/src/ui/builder2.png +0 -0
  266. package/src/ui/pane.js +226 -0
  267. package/src/versionInfo.ts +32 -0
  268. package/src/video/videoPane.js +44 -0
  269. package/timestamp.sh +13 -0
  270. package/travis/bumpversion.js +29 -0
  271. package/tsconfig.json +78 -0
  272. package/typings/raw-loader.d.ts +4 -0
  273. package/typings/solid-namespace/index.d.ts +9 -0
  274. package/webpack.config.js +41 -0
  275. package/dist/dashboard/basicPreferences.js +0 -155
  276. package/dist/dashboard/basicPreferences.js.map +0 -1
  277. package/dist/dashboard/dashboardPane.js +0 -63
  278. package/dist/dashboard/dashboardPane.js.map +0 -1
  279. package/dist/dashboard/homepage.js +0 -63
  280. package/dist/dashboard/homepage.js.map +0 -1
  281. package/dist/home/homePane.js +0 -68
  282. package/dist/home/homePane.js.map +0 -1
  283. package/dist/index.js +0 -48
  284. package/dist/index.js.map +0 -1
  285. package/dist/internal/internalPane.js +0 -195
  286. package/dist/internal/internalPane.js.map +0 -1
  287. package/dist/mainPage/footer.js +0 -16
  288. package/dist/mainPage/footer.js.map +0 -1
  289. package/dist/mainPage/header.js +0 -84
  290. package/dist/mainPage/header.js.map +0 -1
  291. package/dist/mainPage/index.js +0 -30
  292. package/dist/mainPage/index.js.map +0 -1
  293. package/dist/outline/context.js +0 -13
  294. package/dist/outline/context.js.map +0 -1
  295. package/dist/outline/propertyViews.js +0 -33
  296. package/dist/outline/propertyViews.js.map +0 -1
  297. package/dist/outline/viewAsImage.js +0 -7
  298. package/dist/outline/viewAsImage.js.map +0 -1
  299. package/dist/outline/viewAsMbox.js.map +0 -1
  300. package/dist/pad/padPane.js +0 -420
  301. package/dist/pad/padPane.js.map +0 -1
  302. package/dist/sharing/sharingPane.js +0 -45
  303. package/dist/sharing/sharingPane.js.map +0 -1
  304. package/dist/tabbed/tabbedPane.js +0 -55
  305. package/dist/tabbed/tabbedPane.js.map +0 -1
  306. package/dist/trustedApplications/trustedApplications.dom.js +0 -158
  307. package/dist/trustedApplications/trustedApplications.dom.js.map +0 -1
  308. package/dist/trustedApplications/trustedApplications.utils.js +0 -24
  309. package/dist/trustedApplications/trustedApplications.utils.js.map +0 -1
  310. package/dist/trustedApplications/trustedApplications.view.js +0 -62
  311. package/dist/trustedApplications/trustedApplications.view.js.map +0 -1
  312. package/dist/types.js +0 -2
  313. package/dist/types.js.map +0 -1
  314. package/dist/versionInfo.js +0 -31
  315. package/dist/versionInfo.js.map +0 -1
  316. /package/{dist → lib}/dashboard/basicPreferences.d.ts +0 -0
  317. /package/{dist → lib}/dashboard/basicPreferences.d.ts.map +0 -0
  318. /package/{dist → lib}/dashboard/dashboardPane.d.ts +0 -0
  319. /package/{dist → lib}/dashboard/dashboardPane.d.ts.map +0 -0
  320. /package/{dist → lib}/dashboard/homepage.d.ts +0 -0
  321. /package/{dist → lib}/dashboard/homepage.d.ts.map +0 -0
  322. /package/{dist → lib}/home/homePane.d.ts +0 -0
  323. /package/{dist → lib}/home/homePane.d.ts.map +0 -0
  324. /package/{dist → lib}/index.d.ts +0 -0
  325. /package/{dist → lib}/index.d.ts.map +0 -0
  326. /package/{dist → lib}/internal/internalPane.d.ts +0 -0
  327. /package/{dist → lib}/internal/internalPane.d.ts.map +0 -0
  328. /package/{dist → lib}/mainPage/footer.d.ts +0 -0
  329. /package/{dist → lib}/mainPage/footer.d.ts.map +0 -0
  330. /package/{dist → lib}/mainPage/header.d.ts +0 -0
  331. /package/{dist → lib}/mainPage/header.d.ts.map +0 -0
  332. /package/{dist → lib}/mainPage/index.d.ts +0 -0
  333. /package/{dist → lib}/outline/context.d.ts +0 -0
  334. /package/{dist → lib}/outline/context.d.ts.map +0 -0
  335. /package/{dist → lib}/outline/propertyViews.d.ts +0 -0
  336. /package/{dist → lib}/outline/propertyViews.d.ts.map +0 -0
  337. /package/{dist → lib}/outline/viewAsImage.d.ts +0 -0
  338. /package/{dist → lib}/outline/viewAsImage.d.ts.map +0 -0
  339. /package/{dist → lib}/outline/viewAsMbox.d.ts +0 -0
  340. /package/{dist → lib}/outline/viewAsMbox.d.ts.map +0 -0
  341. /package/{dist → lib}/pad/padPane.d.ts +0 -0
  342. /package/{dist → lib}/pad/padPane.d.ts.map +0 -0
  343. /package/{dist → lib}/sharing/sharingPane.d.ts +0 -0
  344. /package/{dist → lib}/sharing/sharingPane.d.ts.map +0 -0
  345. /package/{dist → lib}/tabbed/tabbedPane.d.ts +0 -0
  346. /package/{dist → lib}/tabbed/tabbedPane.d.ts.map +0 -0
  347. /package/{dist → lib}/trustedApplications/trustedApplications.dom.d.ts +0 -0
  348. /package/{dist → lib}/trustedApplications/trustedApplications.dom.d.ts.map +0 -0
  349. /package/{dist → lib}/trustedApplications/trustedApplications.utils.d.ts +0 -0
  350. /package/{dist → lib}/trustedApplications/trustedApplications.utils.d.ts.map +0 -0
  351. /package/{dist → lib}/trustedApplications/trustedApplications.view.d.ts +0 -0
  352. /package/{dist → lib}/trustedApplications/trustedApplications.view.d.ts.map +0 -0
  353. /package/{dist → lib}/types.d.ts +0 -0
  354. /package/{dist → lib}/types.d.ts.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pane.js","names":["UI","_interopRequireWildcard","require","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","_default","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","findTypeURIs","any","qu","render","dom","fetcher","Q","Namespace","TRIP","div","createElement","setAttribute","mention","message","style","undefined","pre","appendChild","createTextNode","complain","plist","statementsMatching","qlist","predicateURIsDone","donePredicate","pred","uri","setPaneStyle","account","mystyle","backgroundColor","ui","value","d2","s","indexOf","split","slice","numericCell","amount","suppressZero","td","textContent","headerCell","str","oderByDate","x","y","dx","dy","insertedPane","paneName","p","paneRegistry","byName","d","expandAfterRow","row","solo","siblings","parentNode","children","j","length","expanded","removeChild","tr","cols","nextSibling","insertBefore","expandAfterRowOrCollapse","transactionTable","list","filter","table","transactionRow","setTRStyle","c0","date","c1","payee","a1","c3","addEventListener","shiftKey","list2","sort","rdf","statement","nav","navLink","obj","a","utils","preds","map","inner","labelForXML","join","innerHTML","complainIfBad","ok","body","nowOrWhenFetched","calendarYear","renderCatgorySelectors","widgets","makeSelectForNestedCategory","rdfs","Classified","load","then","_xhrs","each","console","log","makeDescription","trips","st","object","trips2","concat","sortedBy","reverse","l2","key","pair","cal","makeSelectForOptions","multiple","nullLabel","mint","mintClass","mintStatementsFun","trip","is","push","doc","outliner","getOutliner","attachmentList","wf","appendPropertyTRs","_inverse","calculations","total","yearTotal","yearCategoryTotal","trans","bankStatements","forEach","the","year","ty","tyuri","lit","parseFloat","types","grandTotal","years","ny","cell","header","z","cat","sym","tab"],"sources":["../../src/transaction/pane.js"],"sourcesContent":["/* Financial Transaction Pane\n **\n ** This outline pane allows a user to interact with a transaction\n ** downloaded from a bank statement, annotting it with classes and comments,\n ** trips, etc\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nconst ns = UI.ns\n\nexport default {\n // icon: (module.__dirname || __dirname) + '22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png',\n icon: UI.icons.iconBase + 'noun_106746.svg',\n\n name: 'transaction',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject, context) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/2000/10/swap/pim/qif#Transaction']) return '$$'\n if (kb.any(subject, UI.ns.qu('amount'))) return '$$$' // In case schema not picked up\n\n // if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) return \"period $\"\n\n if (t['http://www.w3.org/ns/pim/trip#Trip']) return 'Trip $'\n\n return null // No under other circumstances (while testing at least!)\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const kb = context.session.store\n const fetcher = kb.fetcher\n const Q = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/qif#')\n const TRIP = $rdf.Namespace('http://www.w3.org/ns/pim/trip#')\n\n const div = dom.createElement('div')\n div.setAttribute('class', 'transactionPane')\n\n const mention = function mention (message, style) {\n if (style === undefined) style = 'color: grey'\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style)\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const complain = function complain (message) {\n return mention(message, 'color: #100; background-color: #fee')\n }\n\n /*\n var thisPane = this\n var rerender = function (div) {\n var parent = div.parentNode\n var div2 = thisPane.render(subject, dom)\n parent.replaceChild(div2, div)\n }\n */\n // //////////////////////////////////////////////////////////////////////////////\n\n const plist = kb.statementsMatching(subject)\n const qlist = kb.statementsMatching(undefined, undefined, subject)\n\n const t = kb.findTypeURIs(subject)\n\n // var me = authn.currentUser()\n const predicateURIsDone = {}\n const donePredicate = function (pred) {\n predicateURIsDone[pred.uri] = true\n }\n\n const setPaneStyle = function (account) {\n let mystyle = 'padding: 0.5em 1.5em 1em 1.5em; '\n if (account) {\n const backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'))\n if (backgroundColor) {\n mystyle += 'background-color: ' + backgroundColor.value + '; '\n }\n }\n div.setAttribute('style', mystyle)\n }\n // setPaneStyle()\n\n // Functions for displaying lists of transactions\n // Click on the transaction line to expand it into a pane\n // Shift-click to expand without collapsing others\n\n const d2 = function (n) {\n if (n === undefined) return ''\n const s = '' + n\n if (s.indexOf('.') >= 0) {\n return s.split('.')[0] + '.' + (s.split('.')[1] + '00').slice(0, 2)\n }\n return s + '.00'\n }\n\n const numericCell = function numericCell (amount, suppressZero) {\n const td = dom.createElement('td')\n if (!(0.0 + amount === 0.0 && suppressZero)) {\n td.textContent = d2(amount)\n }\n td.setAttribute('style', 'width: 6em; text-align: right; ')\n return td\n }\n\n const headerCell = function headerCell (str) {\n const td = dom.createElement('th')\n td.textContent = str\n td.setAttribute('style', 'text-align: right; ')\n return td\n }\n\n const oderByDate = function (x, y) {\n const dx = kb.any(x, ns.qu('date'))\n const dy = kb.any(y, ns.qu('date'))\n if (dx !== undefined && dy !== undefined) {\n if (dx.value < dy.value) return -1\n if (dx.value > dy.value) return 1\n }\n if (x.uri < y.uri) return -1 // Arbitrary but repeatable\n if (x.uri > y.uri) return 1\n return 0\n }\n\n const insertedPane = function (context, subject, paneName) {\n const p = context.session.paneRegistry.byName(paneName)\n const d = p.render(subject, context)\n d.setAttribute('style', 'border: 0.1em solid green;')\n return d\n }\n\n const expandAfterRow = function (dom, row, subject, paneName, solo) {\n const siblings = row.parentNode.children\n if (solo) {\n for (let j = siblings.length - 1; j >= 0; j--) {\n if (siblings[j].expanded) {\n siblings[j].parentNode.removeChild(siblings[j].expanded)\n siblings[j].expanded = false\n }\n }\n }\n const tr = dom.createElement('tr')\n const td = tr.appendChild(dom.createElement('td'))\n td.setAttribute(\n 'style',\n 'width: 98%; padding: 1em; border: 0.1em solid grey;'\n )\n const cols = row.children.length\n if (row.nextSibling) {\n row.parentNode.insertBefore(tr, row.nextSibling)\n } else {\n row.parentNode.appendChild(tr)\n }\n row.expanded = tr\n td.setAttribute('colspan', '' + cols)\n td.appendChild(insertedPane(context, subject, paneName))\n }\n\n const expandAfterRowOrCollapse = function (\n dom,\n row,\n subject,\n paneName,\n solo\n ) {\n if (row.expanded) {\n row.parentNode.removeChild(row.expanded)\n row.expanded = false\n } else {\n expandAfterRow(dom, row, subject, paneName, solo)\n }\n }\n\n const transactionTable = function (dom, list, filter) {\n const table = dom.createElement('table')\n table.setAttribute(\n 'style',\n 'padding-left: 0.5em; padding-right: 0.5em; font-size: 9pt; width: 85%;'\n )\n const transactionRow = function (dom, x) {\n const tr = dom.createElement('tr')\n\n const setTRStyle = function (tr, account) {\n // var mystyle = \"padding: 0.5em 1.5em 1em 1.5em; \"\n let mystyle =\n \"'padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.1em;\"\n if (account) {\n const backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'))\n if (backgroundColor) {\n mystyle += 'background-color: ' + backgroundColor.value + '; '\n }\n }\n tr.setAttribute('style', mystyle)\n }\n\n const account = kb.any(x, ns.qu('toAccount'))\n setTRStyle(tr, account)\n\n const c0 = tr.appendChild(dom.createElement('td'))\n const date = kb.any(x, ns.qu('date'))\n c0.textContent = date ? date.value.slice(0, 10) : '???'\n c0.setAttribute('style', 'width: 7em;')\n\n const c1 = tr.appendChild(dom.createElement('td'))\n c1.setAttribute('style', 'width: 36em;')\n const payee = kb.any(x, ns.qu('payee'))\n c1.textContent = payee ? payee.value : '???'\n const a1 = c1.appendChild(dom.createElement('a'))\n a1.textContent = ' ➜'\n a1.setAttribute('href', x.uri)\n\n const c3 = tr.appendChild(dom.createElement('td'))\n const amount = kb.any(x, ns.qu('in_USD'))\n c3.textContent = amount ? d2(amount.value) : '???'\n c3.setAttribute('style', 'width: 6em; text-align: right; ') // @@ decimal alignment?\n tr.addEventListener(\n 'click',\n function (e) {\n // solo unless shift key\n expandAfterRowOrCollapse(dom, tr, x, 'transaction', !e.shiftKey)\n },\n false\n )\n\n return tr\n }\n\n const list2 = filter ? list.filter(filter) : list.slice() // don't sort a paramater passed in place\n list2.sort(oderByDate)\n\n for (let i = 0; i < list2.length; i++) {\n table.appendChild(transactionRow(dom, list2[i]))\n }\n return table\n }\n\n // Render a single transaction\n\n // This works only if enough metadata about the properties can drive the RDFS\n // (or actual type statements whichtypically are NOT there on)\n if (\n t['http://www.w3.org/2000/10/swap/pim/qif#Transaction'] ||\n kb.any(subject, ns.qu('toAccount'))\n ) {\n // var trip = kb.any(subject, WF('trip'))\n donePredicate(ns.rdf('type'))\n\n const account = kb.any(subject, UI.ns.qu('toAccount'))\n setPaneStyle(account)\n if (!account) {\n complain(\n '(Error: There is no bank account known for this transaction <' +\n subject.uri +\n '>,\\n -- every transaction needs one.)'\n )\n }\n\n let store = null\n const statement = kb.any(subject, UI.ns.qu('accordingTo'))\n if (statement === undefined) {\n complain(\n '(Error: There is no back link to the original data source foir this transaction <' +\n subject.uri +\n \">,\\nso I can't tell how to annotate it.)\"\n )\n } else {\n store =\n statement !== undefined\n ? kb.any(statement, UI.ns.qu('annotationStore'))\n : null\n if (store === undefined) {\n complain(\n '(There is no annotation document for this statement\\n<' +\n statement.uri +\n '>,\\nso you cannot classify this transaction.)'\n )\n }\n }\n\n const nav = dom.createElement('div')\n nav.setAttribute('style', 'float:right')\n div.appendChild(nav)\n\n const navLink = function (pred, label) {\n donePredicate(pred)\n const obj = kb.any(subject, pred)\n if (!obj) return\n const a = dom.createElement('a')\n a.setAttribute('href', obj.uri)\n a.setAttribute('style', 'float:right')\n nav.appendChild(a).textContent = label || UI.utils.label(obj)\n nav.appendChild(dom.createElement('br'))\n }\n\n navLink(UI.ns.qu('toAccount'))\n navLink(UI.ns.qu('accordingTo'), 'Statement')\n navLink(TRIP('trip'))\n\n // Basic data:\n const table = dom.createElement('table')\n div.appendChild(table)\n const preds = ['date', 'payee', 'amount', 'in_USD', 'currency'].map(Q)\n const inner = preds\n .map(function (p) {\n donePredicate(p)\n const value = kb.any(subject, p)\n const s = value ? UI.utils.labelForXML(value) : ''\n return (\n '<tr><td style=\"text-align: right; padding-right: 0.6em\">' +\n UI.utils.labelForXML(p) +\n '</td><td style=\"font-weight: bold;\">' +\n s +\n '</td></tr>'\n )\n })\n .join('\\n')\n table.innerHTML = inner\n\n const complainIfBad = function (ok, body) {\n if (ok) {\n // setModifiedDate(store, kb, store)\n // rerender(div) // deletes the new trip form\n } else complain('Sorry, failed to save your change:\\n' + body)\n }\n\n // What trips do we know about?\n\n // Classify:\n if (store) {\n kb.fetcher.nowOrWhenFetched(store.uri, subject, function (ok, body) {\n if (!ok) complain('Cannot load store ' + store + ' ' + body)\n\n const calendarYear = kb.any(store, ns.qu('calendarYear'))\n\n const renderCatgorySelectors = function () {\n div.insertBefore(\n UI.widgets.makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n UI.ns.qu('Classified'),\n store,\n complainIfBad\n ),\n table.nextSibling\n )\n }\n\n if (kb.any(undefined, ns.rdfs('subClassOf'), ns.qu.Classified)) {\n renderCatgorySelectors()\n } else if (calendarYear) {\n fetcher\n .load(calendarYear)\n .then(function (_xhrs) {\n fetcher\n .load(kb.each(calendarYear, ns.rdfs('seeAlso')))\n .then(function () {\n renderCatgorySelectors()\n })\n .catch(function (e) {\n console.log('Error loading background data: ' + e)\n })\n })\n .catch(function (e) {\n console.log('Error loading calendarYear: ' + e)\n })\n } else {\n console.log(\"Can't get categories, because no calendarYear\")\n }\n div.appendChild(\n UI.widgets.makeDescription(\n dom,\n kb,\n subject,\n UI.ns.rdfs('comment'),\n store,\n complainIfBad\n )\n )\n\n let trips = kb\n .statementsMatching(undefined, TRIP('trip'), undefined, store)\n .map(function (st) {\n return st.object\n }) // @@ Use rdfs\n const trips2 = kb.each(undefined, UI.ns.rdf('type'), TRIP('Trip'))\n trips = trips.concat(trips2).sort() // @@ Unique\n\n const sortedBy = function (kb, list, pred, reverse) {\n const l2 = list.map(function (x) {\n let key = kb.any(x, pred)\n key = key ? key.value : '9999-12-31'\n return [key, x]\n })\n l2.sort()\n if (reverse) l2.reverse()\n return l2.map(function (pair) {\n return pair[1]\n })\n }\n\n trips = sortedBy(kb, trips, UI.ns.cal('dtstart'), true) // Reverse chron\n\n if (trips.length > 1) {\n div.appendChild(\n UI.widgets.makeSelectForOptions(\n dom,\n kb,\n subject,\n TRIP('trip'),\n trips,\n {\n multiple: false,\n nullLabel: '-- what trip? --',\n mint: 'New Trip *',\n mintClass: TRIP('Trip'),\n mintStatementsFun: function (trip) {\n const is = []\n is.push(\n $rdf.st(trip, UI.ns.rdf('type'), TRIP('Trip'), trip.doc())\n )\n return is\n }\n },\n store,\n complainIfBad\n )\n )\n }\n\n div.appendChild(dom.createElement('br'))\n\n // Add in simple comments about the transaction\n\n const outliner = context.getOutliner(dom)\n\n donePredicate(ns.rdfs('comment')) // Done above\n\n UI.widgets.attachmentList(dom, subject, div)\n donePredicate(ns.wf('attachment'))\n\n div\n .appendChild(dom.createElement('tr'))\n .setAttribute('style', 'height: 1em') // spacer\n\n // Remaining properties\n outliner.appendPropertyTRs(div, plist, false, function (\n pred,\n _inverse\n ) {\n return !(pred.uri in predicateURIsDone)\n })\n outliner.appendPropertyTRs(div, qlist, true, function (\n pred,\n _inverse\n ) {\n return !(pred.uri in predicateURIsDone)\n })\n }) // fetch\n }\n // end of render tranasaction instance\n\n // ////////////////////////////////////////////////////////////////////\n //\n // Render the transactions in a Trip\n //\n } else if (t['http://www.w3.org/ns/pim/trip#Trip']) {\n /*\n var query = new $rdf.Query(UI.utils.label(subject))\n var vars = [ 'date', 'transaction', 'comment', 'type', 'in_USD']\n var v = {}\n vars.map(function(x){query.vars.push(v[x]=$rdf.variable(x))}) // Only used by UI\n query.pat.add(v['transaction'], TRIP('trip'), subject)\n\n var opt = kb.formula()\n opt.add(v['transaction'], ns.rdf('type'), v['type']); // Issue: this will get stored supertypes too\n query.pat.optional.push(opt)\n\n query.pat.add(v['transaction'], UI.ns.qu('date'), v['date'])\n\n var opt = kb.formula()\n opt.add(v['transaction'], ns.rdfs('comment'), v['comment'])\n query.pat.optional.push(opt)\n\n //opt = kb.formula()\n query.pat.add(v['transaction'], UI.ns.qu('in_USD'), v['in_USD'])\n\n //query.pat.optional.push(opt)\n\n var tableDiv = UI.widgets.renderTableViewPane(dom, {'query': query, 'onDone': calculations} )\n div.appendChild(tableDiv)\n\n*/\n const calculations = function () {\n const total = {}\n const yearTotal = {}\n const yearCategoryTotal = {}\n const trans = kb.each(undefined, TRIP('trip'), subject)\n const bankStatements = trans.map(function (t) {\n return t.doc()\n })\n kb.fetcher\n .load(bankStatements)\n .then(function () {\n trans.forEach(function (t) {\n const date = kb.the(t, ns.qu('date'))\n const year = date ? ('' + date.value).slice(0, 4) : '????'\n let ty = kb.the(t, ns.rdf('type')) // @@ find most specific type\n // complain(\" -- one trans: \"+t.uri + ' -> '+kb.any(t, UI.ns.qu('in_USD')))\n if (!ty) ty = UI.ns.qu('ErrorNoType')\n if (ty && ty.uri) {\n const tyuri = ty.uri\n if (!yearTotal[year]) yearTotal[year] = 0.0\n if (!yearCategoryTotal[year]) yearCategoryTotal[year] = {}\n if (!total[tyuri]) total[tyuri] = 0.0\n if (!yearCategoryTotal[year][tyuri]) {\n yearCategoryTotal[year][tyuri] = 0.0\n }\n\n const lit = kb.any(t, UI.ns.qu('in_USD'))\n if (!lit) {\n complain('@@ No amount in USD: ' + lit + ' for ' + t)\n }\n if (lit) {\n const amount = parseFloat(lit.value)\n total[tyuri] += amount\n yearCategoryTotal[year][tyuri] += amount\n yearTotal[year] += amount\n }\n }\n })\n\n const types = []\n let grandTotal = 0.0\n const years = []\n let i\n\n for (const y in yearCategoryTotal) {\n // @@ TODO: Write away the need for exception on next line\n \n if (yearCategoryTotal.hasOwnProperty(y)) {\n years.push(y)\n }\n }\n years.sort()\n const ny = years.length\n let cell\n\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute(\n 'style',\n 'font-size: 120%; margin-left:auto; margin-right:1em; margin-top: 1em; border: 0.05em solid gray; padding: 1em;'\n )\n\n if (ny > 1) {\n const header = table.appendChild(dom.createElement('tr'))\n header.appendChild(headerCell(''))\n for (i = 0; i < ny; i++) {\n header.appendChild(headerCell(years[i]))\n }\n header.appendChild(headerCell('total'))\n }\n\n for (const uri in total) {\n // @@ TODO: Write away the need for exception on next line\n \n if (total.hasOwnProperty(uri)) {\n types.push(uri)\n grandTotal += total[uri]\n }\n }\n types.sort()\n let row, label, z\n for (let j = 0; j < types.length; j++) {\n const cat = kb.sym(types[j])\n row = table.appendChild(dom.createElement('tr'))\n label = row.appendChild(dom.createElement('td'))\n label.textContent = UI.utils.label(cat)\n if (ny > 1) {\n for (i = 0; i < ny; i++) {\n z = yearCategoryTotal[years[i]][types[j]]\n cell = row.appendChild(numericCell(z, true))\n }\n }\n row.appendChild(numericCell(total[types[j]], true))\n }\n\n // Trailing totals\n if (types.length > 1) {\n row = table.appendChild(dom.createElement('tr'))\n row.appendChild(headerCell('total'))\n if (ny > 1) {\n for (i = 0; i < ny; i++) {\n z = yearTotal[years[i]]\n cell = row.appendChild(numericCell(z ? d2(z) : ''))\n }\n }\n cell = row.appendChild(numericCell(grandTotal))\n cell.setAttribute(\n 'style',\n 'font-weight: bold; text-align: right;'\n )\n }\n\n const tab = transactionTable(dom, trans)\n tab.setAttribute(\n 'style',\n 'margin-left:auto; margin-right:1em; margin-top: 1em; border: padding: 1em;'\n )\n div.appendChild(tab)\n\n UI.widgets.attachmentList(dom, subject, div)\n })\n .catch(function (e) {\n complain('Error loading transactions: ' + e)\n })\n }\n calculations()\n } // if\n\n return div\n }\n}\n\n// ends\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,325 @@
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 UI = _interopRequireWildcard(require("solid-ui"));
9
+ 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 _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
10
+ /* Financial Period Pane
11
+ **
12
+ ** This outline pane allows a user to interact with a period
13
+ ** downloaded from a bank statement, annotting it with classes and comments,
14
+ ** trips, etc
15
+ */
16
+
17
+ var ns = UI.ns;
18
+ var _default = exports["default"] = {
19
+ icon: UI.icons.iconBase + 'noun_142708.svg',
20
+ name: 'period',
21
+ audience: [ns.solid('PowerUser')],
22
+ // Does the subject deserve this pane?
23
+ label: function label(subject, context) {
24
+ var kb = context.session.store;
25
+ var t = kb.findTypeURIs(subject);
26
+ if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) return 'period';
27
+ return null; // No under other circumstances (while testing at least!)
28
+ },
29
+ render: function render(subject, context) {
30
+ var dom = context.dom;
31
+ var kb = context.session.store;
32
+ var ns = UI.ns;
33
+ var div = dom.createElement('div');
34
+ div.setAttribute('class', 'periodPane');
35
+ var mention = function mention(message, style) {
36
+ if (!style) style = 'color: grey;';
37
+ var pre = dom.createElement('pre');
38
+ pre.setAttribute('style', style);
39
+ div.appendChild(pre);
40
+ pre.appendChild(dom.createTextNode(message));
41
+ };
42
+ var happy = function happy(message) {
43
+ return mention('✓ ' + message, 'color: #010; background-color: #efe');
44
+ };
45
+ var complain = function complain(message) {
46
+ return mention(message, 'color: #100; background-color: #fee');
47
+ };
48
+ /*
49
+ var rerender = function (div) {
50
+ var parent = div.parentNode
51
+ var div2 = thisPane.render(subject, dom)
52
+ parent.replaceChild(div2, div)
53
+ }
54
+ */
55
+ var renderPeriod = function renderPeriod() {
56
+ var dtstart = kb.any(subject, ns.cal('dtstart'));
57
+ if (dtstart === undefined) {
58
+ complain('(Error: There is no start date known for this period <' + subject.uri + '>,\n -- every period needs one.)');
59
+ }
60
+ var dtend = kb.any(subject, ns.cal('dtend'));
61
+ if (dtend === undefined) {
62
+ complain('(Error: There is no end date known for this period <' + subject.uri + '>,\n -- every period needs one.)');
63
+ }
64
+
65
+ // var store = kb.any(subject, UI.ns.qu('annotationStore')) || null
66
+
67
+ var predicateURIsDone = {};
68
+ var donePredicate = function donePredicate(pred) {
69
+ predicateURIsDone[pred.uri] = true;
70
+ };
71
+ donePredicate(ns.rdf('type'));
72
+ var inPeriod = function inPeriod(date) {
73
+ return !!(date && date >= dtstart && date < dtend);
74
+ };
75
+ var d2 = function d2(n) {
76
+ var s = '' + n;
77
+ if (s.indexOf('.') >= 0) {
78
+ return s.split('.')[0] + '.' + (s.split('.')[1] + '00').slice(0, 2);
79
+ }
80
+ return s + '.00';
81
+ };
82
+ var transactionInPeriod = function transactionInPeriod(x) {
83
+ return inPeriod(kb.any(x, ns.qu('date')));
84
+ };
85
+ var oderByDate = function oderByDate(x, y) {
86
+ var dx = kb.any(x, ns.qu('date'));
87
+ var dy = kb.any(y, ns.qu('date'));
88
+ if (dx !== undefined && dy !== undefined) {
89
+ if (dx.value < dy.value) return -1;
90
+ if (dx.value > dy.value) return 1;
91
+ }
92
+ if (x.uri < y.uri) return -1; // Arbitrary but repeatable
93
+ if (x.uri > y.uri) return 1;
94
+ return 0;
95
+ };
96
+ /*
97
+ var setPaneStyle = function (account) {
98
+ var mystyle = 'padding: 0.5em 1.5em 1em 1.5em; '
99
+ if (account) {
100
+ var backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'))
101
+ if (backgroundColor) {
102
+ mystyle += 'background-color: ' + backgroundColor.value + '; '
103
+ }
104
+ }
105
+ div.setAttribute('style', mystyle)
106
+ }
107
+ // setPaneStyle();
108
+ */
109
+ var h2 = div.appendChild(dom.createElement('h2'));
110
+ h2.textContent = 'Period ' + dtstart.value.slice(0, 10) + ' - ' + dtend.value.slice(0, 10);
111
+ var insertedPane = function insertedPane(context, subject, paneName) {
112
+ var p = context.session.paneRegistry.byName(paneName);
113
+ var d = p.render(subject, context);
114
+ d.setAttribute('style', 'border: 0.1em solid green;');
115
+ return d;
116
+ };
117
+ var expandAfterRow = function expandAfterRow(dom, row, subject, paneName, solo) {
118
+ var siblings = row.parentNode.children;
119
+ if (solo) {
120
+ for (var j = siblings.length - 1; j >= 0; j--) {
121
+ if (siblings[j].expanded) {
122
+ siblings[j].parentNode.removeChild(siblings[j].expanded);
123
+ siblings[j].expanded = false;
124
+ }
125
+ }
126
+ }
127
+ var tr = dom.createElement('tr');
128
+ var td = tr.appendChild(dom.createElement('td'));
129
+ td.setAttribute('style', 'width: 98%; padding: 1em; border: 0.1em solid grey;');
130
+ var cols = row.children.length;
131
+ if (row.nextSibling) {
132
+ row.parentNode.insertBefore(tr, row.nextSibling);
133
+ } else {
134
+ row.parentNode.appendChild(tr);
135
+ }
136
+ row.expanded = tr;
137
+ td.setAttribute('colspan', '' + cols);
138
+ td.appendChild(insertedPane(context, subject, paneName));
139
+ };
140
+ var expandAfterRowOrCollapse = function expandAfterRowOrCollapse(dom, row, subject, paneName, solo) {
141
+ if (row.expanded) {
142
+ row.parentNode.removeChild(row.expanded);
143
+ row.expanded = false;
144
+ } else {
145
+ expandAfterRow(dom, row, subject, paneName, solo);
146
+ }
147
+ };
148
+ var transactionTable = function transactionTable(dom, list) {
149
+ var table = dom.createElement('table');
150
+ table.setAttribute('style', 'margin-left: 100; font-size: 9pt; width: 85%;');
151
+ var transactionRow = function transactionRow(dom, x) {
152
+ var tr = dom.createElement('tr');
153
+ var setTRStyle = function setTRStyle(tr, account) {
154
+ // var mystyle = "padding: 0.5em 1.5em 1em 1.5em; ";
155
+ var mystyle = 'margin-left: 8em; padding-left: 5em;';
156
+ if (account) {
157
+ var backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'));
158
+ if (backgroundColor) {
159
+ mystyle += 'background-color: ' + backgroundColor.value + '; ';
160
+ }
161
+ }
162
+ tr.setAttribute('style', mystyle);
163
+ };
164
+ var account = kb.any(x, ns.qu('toAccount'));
165
+ setTRStyle(tr, account);
166
+ var c0 = tr.appendChild(dom.createElement('td'));
167
+ var date = kb.any(x, ns.qu('date'));
168
+ c0.textContent = date ? date.value.slice(0, 10) : '???';
169
+ c0.setAttribute('style', 'width: 7em;');
170
+ var c1 = tr.appendChild(dom.createElement('td'));
171
+ c1.setAttribute('style', 'width: 36em;');
172
+ var payee = kb.any(x, ns.qu('payee'));
173
+ c1.textContent = payee ? payee.value : '???';
174
+ var a1 = c1.appendChild(dom.createElement('a'));
175
+ a1.textContent = ' ➜';
176
+ a1.setAttribute('href', x.uri);
177
+ var c3 = tr.appendChild(dom.createElement('td'));
178
+ var amount = kb.any(x, ns.qu('in_USD'));
179
+ c3.textContent = amount ? d2(amount.value) : '???';
180
+ c3.setAttribute('style', 'width: 6em; text-align: right; '); // @@ decimal alignment?
181
+ tr.addEventListener('click', function (e) {
182
+ // solo unless shift key
183
+ expandAfterRowOrCollapse(dom, tr, x, 'transaction', !e.shiftKey);
184
+ }, false);
185
+ return tr;
186
+ };
187
+ var list2 = list.filter(transactionInPeriod);
188
+ list2.sort(oderByDate);
189
+ for (var i = 0; i < list2.length; i++) {
190
+ table.appendChild(transactionRow(dom, list2[i]));
191
+ }
192
+ return table;
193
+ };
194
+
195
+ // List unclassified transactions
196
+
197
+ var dummies = {
198
+ 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': true,
199
+ // (we knew)
200
+ 'http://www.w3.org/2000/10/swap/pim/qif#Unclassified': true,
201
+ // pseudo classifications we may phase out
202
+ 'http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedOutgoing': true,
203
+ 'http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedIncome': true
204
+ };
205
+ var xURIs = kb.findMemberURIs(ns.qu('Transaction'));
206
+ var unclassifiedIn = [];
207
+ var unclassifiedOut = [];
208
+ var usd, z;
209
+ for (var y in xURIs) {
210
+ // For each thing which can be inferred to be a transaction
211
+ // @@ TODO: Write away the need for exception on next line
212
+
213
+ if (xURIs.hasOwnProperty(y)) {
214
+ z = kb.sym(y);
215
+ var tt = kb.each(z, ns.rdf('type')); // What EXPLICIT definitions
216
+ var classified = false;
217
+ for (var j = 0; j < tt.length; j++) {
218
+ var _t = tt[j];
219
+ if (dummies[_t.uri] === undefined) {
220
+ classified = true;
221
+ }
222
+ }
223
+ if (!classified) {
224
+ usd = kb.any(z, ns.qu('in_USD'));
225
+ if (usd === undefined) {
226
+ usd = kb.any(z, ns.qu('amount'));
227
+ }
228
+ if (usd && ('' + usd.value).indexOf('-') >= 0) {
229
+ unclassifiedOut.push(kb.sym(y));
230
+ } else {
231
+ unclassifiedIn.push(kb.sym(y));
232
+ }
233
+ }
234
+ }
235
+ }
236
+ var tab, count;
237
+ if (unclassifiedIn.length) {
238
+ tab = transactionTable(dom, unclassifiedIn);
239
+ count = tab.children.length;
240
+ div.appendChild(dom.createElement('h3')).textContent = 'Unclassified Income' + (count < 4 ? '' : ' (' + count + ')');
241
+ div.appendChild(tab);
242
+ } else {
243
+ happy('No unclassified income');
244
+ }
245
+ if (unclassifiedOut.length) {
246
+ tab = transactionTable(dom, unclassifiedOut);
247
+ count = tab.children.length;
248
+ div.appendChild(dom.createElement('h3')).textContent = 'Unclassified Outgoings' + (count < 4 ? '' : ' (' + count + ')');
249
+ div.appendChild(tab);
250
+ } else {
251
+ happy('No unclassified outgoings ');
252
+ }
253
+
254
+ // /////////////// Check some categories of transaction for having given fields
255
+
256
+ var catSymbol = function catSymbol(catTail) {
257
+ var cats = kb.findSubClassesNT(ns.qu('Transaction'));
258
+ for (var cat in cats) {
259
+ // @@ TODO: Write away the need for exception on next line
260
+
261
+ if (cats.hasOwnProperty(cat)) {
262
+ if (cat.slice(1, -1).split('#')[1] === catTail) {
263
+ return kb.sym(cat.slice(1, -1));
264
+ }
265
+ }
266
+ }
267
+ return null;
268
+ };
269
+ var checkCatHasField = function checkCatHasField(catTail, pred) {
270
+ var cat = catSymbol(catTail);
271
+ var tab;
272
+ var guilty = [];
273
+ var count = 0;
274
+ if (!cat) {
275
+ complain('Error: No category correspnding to ' + catTail);
276
+ return null;
277
+ }
278
+ var list = kb.each(undefined, ns.rdf('type'), cat);
279
+ for (var i = 0; i < list.length; i++) {
280
+ if (!kb.any(list[i], pred)) {
281
+ guilty.push(list[i]);
282
+ }
283
+ }
284
+ if (guilty.length) {
285
+ tab = transactionTable(dom, guilty);
286
+ count = tab.children.length;
287
+ div.appendChild(dom.createElement('h3')).textContent = UI.utils.label(cat) + ' with no ' + UI.utils.label(pred) + (count < 4 ? '' : ' (' + count + ')');
288
+ div.appendChild(tab);
289
+ }
290
+ return count;
291
+ };
292
+
293
+ // Load dynamically as properties of period
294
+ if (checkCatHasField('Reimbursables', ns.trip('trip')) === 0) {
295
+ happy('Reimbursables all have trips');
296
+ }
297
+ if (checkCatHasField('Other_Inc_Speaking', ns.trip('trip')) === 0) {
298
+ happy('Speaking income all has trips');
299
+ }
300
+ // end of render period instance
301
+ }; // renderPeriod
302
+
303
+ // //////////////////////////////////////////////////////////////////////////////
304
+
305
+ // var me = authn.currentUser()
306
+
307
+ // Render a single Period
308
+
309
+ // This works only if enough metadata about the properties can drive the RDFS
310
+ // (or actual type statements whichtypically are NOT there on)
311
+ var t = kb.findTypeURIs(subject);
312
+ if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) {
313
+ var needed = kb.each(subject, ns.rdfs('seeAlso'));
314
+ console.log('Loading before render: ' + needed.length);
315
+ kb.fetcher.load(needed).then(function () {
316
+ renderPeriod();
317
+ });
318
+ }
319
+
320
+ // if (!me) complain("You do not have your Web Id set. Set your Web ID to make changes.");
321
+
322
+ return div;
323
+ }
324
+ }; // ends
325
+ //# sourceMappingURL=period.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"period.js","names":["UI","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","_default","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","findTypeURIs","render","dom","div","createElement","setAttribute","mention","message","style","pre","appendChild","createTextNode","happy","complain","renderPeriod","dtstart","any","cal","undefined","uri","dtend","predicateURIsDone","donePredicate","pred","rdf","inPeriod","date","d2","s","indexOf","split","slice","transactionInPeriod","x","qu","oderByDate","y","dx","dy","value","h2","textContent","insertedPane","paneName","p","paneRegistry","byName","d","expandAfterRow","row","solo","siblings","parentNode","children","j","length","expanded","removeChild","tr","td","cols","nextSibling","insertBefore","expandAfterRowOrCollapse","transactionTable","list","table","transactionRow","setTRStyle","account","mystyle","backgroundColor","ui","c0","c1","payee","a1","c3","amount","addEventListener","shiftKey","list2","filter","sort","dummies","xURIs","findMemberURIs","unclassifiedIn","unclassifiedOut","usd","z","sym","tt","each","classified","push","tab","count","catSymbol","catTail","cats","findSubClassesNT","cat","checkCatHasField","guilty","utils","trip","needed","rdfs","console","log","fetcher","load","then"],"sources":["../../src/transaction/period.js"],"sourcesContent":["/* Financial Period Pane\n **\n ** This outline pane allows a user to interact with a period\n ** downloaded from a bank statement, annotting it with classes and comments,\n ** trips, etc\n */\n\nimport * as UI from 'solid-ui'\nconst ns = UI.ns\n\nexport default {\n icon: UI.icons.iconBase + 'noun_142708.svg',\n\n name: 'period',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject, context) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) return 'period'\n return null // No under other circumstances (while testing at least!)\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const kb = context.session.store\n const ns = UI.ns\n\n const div = dom.createElement('div')\n div.setAttribute('class', 'periodPane')\n\n const mention = function mention (message, style) {\n if (!style) style = 'color: grey;'\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style)\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const happy = function happy (message) {\n return mention('✓ ' + message, 'color: #010; background-color: #efe')\n }\n const complain = function complain (message) {\n return mention(message, 'color: #100; background-color: #fee')\n }\n /*\n var rerender = function (div) {\n var parent = div.parentNode\n var div2 = thisPane.render(subject, dom)\n parent.replaceChild(div2, div)\n }\n*/\n const renderPeriod = function () {\n const dtstart = kb.any(subject, ns.cal('dtstart'))\n if (dtstart === undefined) {\n complain(\n '(Error: There is no start date known for this period <' +\n subject.uri +\n '>,\\n -- every period needs one.)'\n )\n }\n\n const dtend = kb.any(subject, ns.cal('dtend'))\n if (dtend === undefined) {\n complain(\n '(Error: There is no end date known for this period <' +\n subject.uri +\n '>,\\n -- every period needs one.)'\n )\n }\n\n // var store = kb.any(subject, UI.ns.qu('annotationStore')) || null\n\n const predicateURIsDone = {}\n const donePredicate = function (pred) {\n predicateURIsDone[pred.uri] = true\n }\n donePredicate(ns.rdf('type'))\n\n const inPeriod = function (date) {\n return !!(date && date >= dtstart && date < dtend)\n }\n\n const d2 = function (n) {\n const s = '' + n\n if (s.indexOf('.') >= 0) {\n return s.split('.')[0] + '.' + (s.split('.')[1] + '00').slice(0, 2)\n }\n return s + '.00'\n }\n\n const transactionInPeriod = function (x) {\n return inPeriod(kb.any(x, ns.qu('date')))\n }\n\n const oderByDate = function (x, y) {\n const dx = kb.any(x, ns.qu('date'))\n const dy = kb.any(y, ns.qu('date'))\n if (dx !== undefined && dy !== undefined) {\n if (dx.value < dy.value) return -1\n if (dx.value > dy.value) return 1\n }\n if (x.uri < y.uri) return -1 // Arbitrary but repeatable\n if (x.uri > y.uri) return 1\n return 0\n }\n /*\n var setPaneStyle = function (account) {\n var mystyle = 'padding: 0.5em 1.5em 1em 1.5em; '\n if (account) {\n var backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'))\n if (backgroundColor) {\n mystyle += 'background-color: ' + backgroundColor.value + '; '\n }\n }\n div.setAttribute('style', mystyle)\n }\n // setPaneStyle();\n*/\n const h2 = div.appendChild(dom.createElement('h2'))\n h2.textContent =\n 'Period ' +\n dtstart.value.slice(0, 10) +\n ' - ' +\n dtend.value.slice(0, 10)\n\n const insertedPane = function (context, subject, paneName) {\n const p = context.session.paneRegistry.byName(paneName)\n const d = p.render(subject, context)\n d.setAttribute('style', 'border: 0.1em solid green;')\n return d\n }\n\n const expandAfterRow = function (dom, row, subject, paneName, solo) {\n const siblings = row.parentNode.children\n if (solo) {\n for (let j = siblings.length - 1; j >= 0; j--) {\n if (siblings[j].expanded) {\n siblings[j].parentNode.removeChild(siblings[j].expanded)\n siblings[j].expanded = false\n }\n }\n }\n const tr = dom.createElement('tr')\n const td = tr.appendChild(dom.createElement('td'))\n td.setAttribute(\n 'style',\n 'width: 98%; padding: 1em; border: 0.1em solid grey;'\n )\n const cols = row.children.length\n if (row.nextSibling) {\n row.parentNode.insertBefore(tr, row.nextSibling)\n } else {\n row.parentNode.appendChild(tr)\n }\n row.expanded = tr\n td.setAttribute('colspan', '' + cols)\n td.appendChild(insertedPane(context, subject, paneName))\n }\n\n const expandAfterRowOrCollapse = function (\n dom,\n row,\n subject,\n paneName,\n solo\n ) {\n if (row.expanded) {\n row.parentNode.removeChild(row.expanded)\n row.expanded = false\n } else {\n expandAfterRow(dom, row, subject, paneName, solo)\n }\n }\n\n const transactionTable = function (dom, list) {\n const table = dom.createElement('table')\n table.setAttribute(\n 'style',\n 'margin-left: 100; font-size: 9pt; width: 85%;'\n )\n const transactionRow = function (dom, x) {\n const tr = dom.createElement('tr')\n\n const setTRStyle = function (tr, account) {\n // var mystyle = \"padding: 0.5em 1.5em 1em 1.5em; \";\n let mystyle = 'margin-left: 8em; padding-left: 5em;'\n if (account) {\n const backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'))\n if (backgroundColor) {\n mystyle += 'background-color: ' + backgroundColor.value + '; '\n }\n }\n tr.setAttribute('style', mystyle)\n }\n\n const account = kb.any(x, ns.qu('toAccount'))\n setTRStyle(tr, account)\n\n const c0 = tr.appendChild(dom.createElement('td'))\n const date = kb.any(x, ns.qu('date'))\n c0.textContent = date ? date.value.slice(0, 10) : '???'\n c0.setAttribute('style', 'width: 7em;')\n\n const c1 = tr.appendChild(dom.createElement('td'))\n c1.setAttribute('style', 'width: 36em;')\n const payee = kb.any(x, ns.qu('payee'))\n c1.textContent = payee ? payee.value : '???'\n const a1 = c1.appendChild(dom.createElement('a'))\n a1.textContent = ' ➜'\n a1.setAttribute('href', x.uri)\n\n const c3 = tr.appendChild(dom.createElement('td'))\n const amount = kb.any(x, ns.qu('in_USD'))\n c3.textContent = amount ? d2(amount.value) : '???'\n c3.setAttribute('style', 'width: 6em; text-align: right; ') // @@ decimal alignment?\n tr.addEventListener(\n 'click',\n function (e) {\n // solo unless shift key\n expandAfterRowOrCollapse(dom, tr, x, 'transaction', !e.shiftKey)\n },\n false\n )\n\n return tr\n }\n\n const list2 = list.filter(transactionInPeriod)\n list2.sort(oderByDate)\n\n for (let i = 0; i < list2.length; i++) {\n table.appendChild(transactionRow(dom, list2[i]))\n }\n return table\n }\n\n // List unclassified transactions\n\n const dummies = {\n 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': true, // (we knew)\n 'http://www.w3.org/2000/10/swap/pim/qif#Unclassified': true, // pseudo classifications we may phase out\n 'http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedOutgoing': true,\n 'http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedIncome': true\n }\n const xURIs = kb.findMemberURIs(ns.qu('Transaction'))\n const unclassifiedIn = []\n const unclassifiedOut = []\n let usd, z\n for (const y in xURIs) {\n // For each thing which can be inferred to be a transaction\n // @@ TODO: Write away the need for exception on next line\n \n if (xURIs.hasOwnProperty(y)) {\n z = kb.sym(y)\n const tt = kb.each(z, ns.rdf('type')) // What EXPLICIT definitions\n let classified = false\n for (let j = 0; j < tt.length; j++) {\n const t = tt[j]\n if (dummies[t.uri] === undefined) {\n classified = true\n }\n }\n if (!classified) {\n usd = kb.any(z, ns.qu('in_USD'))\n if (usd === undefined) {\n usd = kb.any(z, ns.qu('amount'))\n }\n if (usd && ('' + usd.value).indexOf('-') >= 0) {\n unclassifiedOut.push(kb.sym(y))\n } else {\n unclassifiedIn.push(kb.sym(y))\n }\n }\n }\n }\n let tab, count\n if (unclassifiedIn.length) {\n tab = transactionTable(dom, unclassifiedIn)\n count = tab.children.length\n div.appendChild(dom.createElement('h3')).textContent =\n 'Unclassified Income' + (count < 4 ? '' : ' (' + count + ')')\n div.appendChild(tab)\n } else {\n happy('No unclassified income')\n }\n if (unclassifiedOut.length) {\n tab = transactionTable(dom, unclassifiedOut)\n count = tab.children.length\n div.appendChild(dom.createElement('h3')).textContent =\n 'Unclassified Outgoings' + (count < 4 ? '' : ' (' + count + ')')\n div.appendChild(tab)\n } else {\n happy('No unclassified outgoings ')\n }\n\n // /////////////// Check some categories of transaction for having given fields\n\n const catSymbol = function (catTail) {\n const cats = kb.findSubClassesNT(ns.qu('Transaction'))\n for (const cat in cats) {\n // @@ TODO: Write away the need for exception on next line\n \n if (cats.hasOwnProperty(cat)) {\n if (cat.slice(1, -1).split('#')[1] === catTail) {\n return kb.sym(cat.slice(1, -1))\n }\n }\n }\n return null\n }\n\n const checkCatHasField = function (catTail, pred) {\n const cat = catSymbol(catTail)\n let tab\n const guilty = []\n let count = 0\n if (!cat) {\n complain('Error: No category correspnding to ' + catTail)\n return null\n }\n const list = kb.each(undefined, ns.rdf('type'), cat)\n for (let i = 0; i < list.length; i++) {\n if (!kb.any(list[i], pred)) {\n guilty.push(list[i])\n }\n }\n if (guilty.length) {\n tab = transactionTable(dom, guilty)\n count = tab.children.length\n div.appendChild(dom.createElement('h3')).textContent =\n UI.utils.label(cat) +\n ' with no ' +\n UI.utils.label(pred) +\n (count < 4 ? '' : ' (' + count + ')')\n div.appendChild(tab)\n }\n return count\n }\n\n // Load dynamically as properties of period\n if (checkCatHasField('Reimbursables', ns.trip('trip')) === 0) {\n happy('Reimbursables all have trips')\n }\n if (checkCatHasField('Other_Inc_Speaking', ns.trip('trip')) === 0) {\n happy('Speaking income all has trips')\n }\n // end of render period instance\n } // renderPeriod\n\n // //////////////////////////////////////////////////////////////////////////////\n\n // var me = authn.currentUser()\n\n // Render a single Period\n\n // This works only if enough metadata about the properties can drive the RDFS\n // (or actual type statements whichtypically are NOT there on)\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) {\n const needed = kb.each(subject, ns.rdfs('seeAlso'))\n console.log('Loading before render: ' + needed.length)\n kb.fetcher.load(needed).then(function () {\n renderPeriod()\n })\n }\n\n // if (!me) complain(\"You do not have your Web Id set. Set your Web ID to make changes.\");\n\n return div\n }\n}\n// ends\n"],"mappings":"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","ignoreList":[]}