solid-panes 4.4.2-2 → 4.4.2-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/RDFXMLPane.d.ts +2 -3
- package/dist/RDFXMLPane2.cjs.js +3 -0
- package/dist/RDFXMLPane2.cjs.js.map +1 -0
- package/dist/RDFXMLPane2.esm.js +55 -0
- package/dist/RDFXMLPane2.esm.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/help-circle.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/user.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/user.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/user.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/user.esm.js.map +1 -0
- package/dist/audio/audioPane.cjs.js +2 -0
- package/dist/audio/audioPane.cjs.js.map +1 -0
- package/dist/audio/audioPane.esm.js +96 -0
- package/dist/audio/audioPane.esm.js.map +1 -0
- package/dist/classInstancePane.cjs.js +2 -0
- package/dist/classInstancePane.cjs.js.map +1 -0
- package/dist/classInstancePane.esm.js +50 -0
- package/dist/classInstancePane.esm.js.map +1 -0
- package/dist/components/header/Header.cjs.js +19 -0
- package/dist/components/header/Header.cjs.js.map +1 -0
- package/dist/components/header/Header.d.ts +8 -0
- package/dist/components/header/Header.d.ts.map +1 -0
- package/dist/components/header/Header.esm.js +228 -0
- package/dist/components/header/Header.esm.js.map +1 -0
- package/dist/components/header/Header.styles.cjs.js +2 -0
- package/dist/components/header/Header.styles.cjs.js.map +1 -0
- package/dist/components/header/Header.styles.esm.js +7 -0
- package/dist/components/header/Header.styles.esm.js.map +1 -0
- package/dist/components/header/index.cjs.js +1 -0
- package/dist/components/header/index.d.ts +4 -0
- package/dist/components/header/index.d.ts.map +1 -0
- package/dist/components/header/index.esm.js +1 -0
- package/dist/dashboard/basicPreferences.cjs.js +2 -0
- package/dist/dashboard/basicPreferences.cjs.js.map +1 -0
- package/dist/dashboard/basicPreferences.d.ts +1 -1
- package/dist/dashboard/basicPreferences.esm.js +70 -0
- package/dist/dashboard/basicPreferences.esm.js.map +1 -0
- package/dist/dashboard/dashboardPane.cjs.js +2 -0
- package/dist/dashboard/dashboardPane.cjs.js.map +1 -0
- package/dist/dashboard/dashboardPane.d.ts +1 -1
- package/dist/dashboard/dashboardPane.esm.js +7 -0
- package/dist/dashboard/dashboardPane.esm.js.map +1 -0
- package/dist/dashboard/homepage.cjs.js +2 -0
- package/dist/dashboard/homepage.cjs.js.map +1 -0
- package/dist/dashboard/homepage.d.ts +1 -1
- package/dist/dashboard/homepage.esm.js +26 -0
- package/dist/dashboard/homepage.esm.js.map +1 -0
- package/dist/dashboard/ontologyData.cjs.js +37 -0
- package/dist/dashboard/ontologyData.cjs.js.map +1 -0
- package/dist/dashboard/ontologyData.esm.js +6 -0
- package/dist/dashboard/ontologyData.esm.js.map +1 -0
- package/dist/dashboard/preferencesFormText.cjs.js +20 -0
- package/dist/dashboard/preferencesFormText.cjs.js.map +1 -0
- package/dist/dashboard/preferencesFormText.esm.js +6 -0
- package/dist/dashboard/preferencesFormText.esm.js.map +1 -0
- package/dist/dataContentPane.d.ts +2 -3
- package/dist/dataContentPane2.cjs.js +2 -0
- package/dist/dataContentPane2.cjs.js.map +1 -0
- package/dist/dataContentPane2.esm.js +109 -0
- package/dist/dataContentPane2.esm.js.map +1 -0
- package/dist/defaultPane.d.ts +2 -3
- package/dist/defaultPane2.cjs.js +2 -0
- package/dist/defaultPane2.cjs.js.map +1 -0
- package/dist/defaultPane2.esm.js +41 -0
- package/dist/defaultPane2.esm.js.map +1 -0
- package/dist/dev.d.ts +10 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dokieli/dokieliPane.cjs.js +2 -0
- package/dist/dokieli/dokieliPane.cjs.js.map +1 -0
- package/dist/dokieli/dokieliPane.esm.js +39 -0
- package/dist/dokieli/dokieliPane.esm.js.map +1 -0
- package/dist/dokieli/{new.js → new.cjs.js} +4 -10
- package/dist/dokieli/new.cjs.js.map +1 -0
- package/dist/dokieli/new.esm.js +6 -0
- package/dist/dokieli/new.esm.js.map +1 -0
- package/dist/form/pane.cjs.js +4 -0
- package/dist/form/pane.cjs.js.map +1 -0
- package/dist/form/pane.d.ts +1 -2
- package/dist/form/pane.esm.js +121 -0
- package/dist/form/pane.esm.js.map +1 -0
- package/dist/home/homePane.cjs.js +2 -0
- package/dist/home/homePane.cjs.js.map +1 -0
- package/dist/home/homePane.d.ts +1 -1
- package/dist/home/homePane.esm.js +35 -0
- package/dist/home/homePane.esm.js.map +1 -0
- package/dist/humanReadablePane.d.ts +2 -3
- package/dist/humanReadablePane2.cjs.js +2 -0
- package/dist/humanReadablePane2.cjs.js.map +1 -0
- package/dist/humanReadablePane2.esm.js +123 -0
- package/dist/humanReadablePane2.esm.js.map +1 -0
- package/dist/icons/dashboard.cjs.js +2 -0
- package/dist/icons/dashboard.cjs.js.map +1 -0
- package/dist/icons/dashboard.esm.js +6 -0
- package/dist/icons/dashboard.esm.js.map +1 -0
- package/dist/icons/folder.cjs.js +2 -0
- package/dist/icons/folder.cjs.js.map +1 -0
- package/dist/icons/folder.esm.js +6 -0
- package/dist/icons/folder.esm.js.map +1 -0
- package/dist/icons/friends.cjs.js +2 -0
- package/dist/icons/friends.cjs.js.map +1 -0
- package/dist/icons/friends.esm.js +6 -0
- package/dist/icons/friends.esm.js.map +1 -0
- package/dist/icons/iconHelper.cjs.js +2 -0
- package/dist/icons/iconHelper.cjs.js.map +1 -0
- package/dist/icons/iconHelper.esm.js +17 -0
- package/dist/icons/iconHelper.esm.js.map +1 -0
- package/dist/icons/{menu.svg → menu.cjs.js} +3 -2
- package/dist/icons/menu.cjs.js.map +1 -0
- package/dist/icons/menu.esm.js +6 -0
- package/dist/icons/menu.esm.js.map +1 -0
- package/dist/icons/person.cjs.js +2 -0
- package/dist/icons/person.cjs.js.map +1 -0
- package/dist/icons/person.esm.js +6 -0
- package/dist/icons/person.esm.js.map +1 -0
- package/dist/imagePane.d.ts +2 -3
- package/dist/imagePane2.cjs.js +2 -0
- package/dist/imagePane2.cjs.js.map +1 -0
- package/dist/imagePane2.esm.js +32 -0
- package/dist/imagePane2.esm.js.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.esm.js +26 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/internal/internalPane.d.ts +1 -2
- package/dist/internal/internalPane2.cjs.js +2 -0
- package/dist/internal/internalPane2.cjs.js.map +1 -0
- package/dist/internal/internalPane2.esm.js +104 -0
- package/dist/internal/internalPane2.esm.js.map +1 -0
- package/dist/mainPage/footer.cjs.js +2 -0
- package/dist/mainPage/footer.cjs.js.map +1 -0
- package/dist/mainPage/footer.d.ts +1 -3
- package/dist/mainPage/footer.esm.js +18 -0
- package/dist/mainPage/footer.esm.js.map +1 -0
- package/dist/mainPage/header.cjs.js +2 -0
- package/dist/mainPage/header.cjs.js.map +1 -0
- package/dist/mainPage/header.d.ts +1 -15
- package/dist/mainPage/header.d.ts.map +1 -1
- package/dist/mainPage/header.esm.js +25 -0
- package/dist/mainPage/header.esm.js.map +1 -0
- package/dist/mainPage/index.cjs.js +2 -0
- package/dist/mainPage/index.cjs.js.map +1 -0
- package/dist/mainPage/index.d.ts +3 -7
- package/dist/mainPage/index.d.ts.map +1 -1
- package/dist/mainPage/index.esm.js +38 -0
- package/dist/mainPage/index.esm.js.map +1 -0
- package/dist/mainPage/menu.d.ts +1 -2
- package/dist/mainPage/menu2.cjs.js +2 -0
- package/dist/mainPage/menu2.cjs.js.map +1 -0
- package/dist/mainPage/menu2.esm.js +184 -0
- package/dist/mainPage/menu2.esm.js.map +1 -0
- package/dist/n3Pane.d.ts +2 -3
- package/dist/n3Pane2.cjs.js +3 -0
- package/dist/n3Pane2.cjs.js.map +1 -0
- package/dist/n3Pane2.esm.js +52 -0
- package/dist/n3Pane2.esm.js.map +1 -0
- package/dist/outline/context.cjs.js +2 -0
- package/dist/outline/context.cjs.js.map +1 -0
- package/dist/outline/context.d.ts +3 -3
- package/dist/outline/context.esm.js +18 -0
- package/dist/outline/context.esm.js.map +1 -0
- package/dist/outline/manager2.cjs.js +3 -0
- package/dist/outline/manager2.cjs.js.map +1 -0
- package/dist/outline/manager2.esm.js +875 -0
- package/dist/outline/manager2.esm.js.map +1 -0
- package/dist/outline/outlineIcons.cjs.js +2 -0
- package/dist/outline/outlineIcons.cjs.js.map +1 -0
- package/dist/outline/outlineIcons.esm.js +10 -0
- package/dist/outline/outlineIcons.esm.js.map +1 -0
- package/dist/outline/propertyViews.cjs.js +2 -0
- package/dist/outline/propertyViews.cjs.js.map +1 -0
- package/dist/outline/propertyViews.esm.js +19 -0
- package/dist/outline/propertyViews.esm.js.map +1 -0
- package/dist/outline/queryByExample.cjs.js +2 -0
- package/dist/outline/queryByExample.cjs.js.map +1 -0
- package/dist/outline/queryByExample.esm.js +25 -0
- package/dist/outline/queryByExample.esm.js.map +1 -0
- package/dist/outline/userInput.cjs.js +61 -0
- package/dist/outline/userInput.cjs.js.map +1 -0
- package/dist/outline/userInput.esm.js +784 -0
- package/dist/outline/userInput.esm.js.map +1 -0
- package/dist/outline/viewAsImage.cjs.js +2 -0
- package/dist/outline/viewAsImage.cjs.js.map +1 -0
- package/dist/outline/viewAsImage.esm.js +10 -0
- package/dist/outline/viewAsImage.esm.js.map +1 -0
- package/dist/outline/viewAsMbox.cjs.js +2 -0
- package/dist/outline/viewAsMbox.cjs.js.map +1 -0
- package/dist/outline/viewAsMbox.esm.js +9 -0
- package/dist/outline/viewAsMbox.esm.js.map +1 -0
- package/dist/pad/padPane.d.ts +1 -2
- package/dist/pad/padPane2.cjs.js +2 -0
- package/dist/pad/padPane2.cjs.js.map +1 -0
- package/dist/pad/padPane2.esm.js +172 -0
- package/dist/pad/padPane2.esm.js.map +1 -0
- package/dist/playlist/playlistPane.cjs.js +2 -0
- package/dist/playlist/playlistPane.cjs.js.map +1 -0
- package/dist/playlist/playlistPane.esm.js +49 -0
- package/dist/playlist/playlistPane.esm.js.map +1 -0
- package/dist/profileUtils/ownerProfile.cjs.js +2 -0
- package/dist/profileUtils/ownerProfile.cjs.js.map +1 -0
- package/dist/profileUtils/ownerProfile.d.ts +1 -1
- package/dist/profileUtils/ownerProfile.esm.js +50 -0
- package/dist/profileUtils/ownerProfile.esm.js.map +1 -0
- package/dist/registerPanes.cjs.js +2 -0
- package/dist/registerPanes.cjs.js.map +1 -0
- package/dist/registerPanes.esm.js +46 -0
- package/dist/registerPanes.esm.js.map +1 -0
- package/dist/schedule/formsForSchedule.cjs.js +117 -0
- package/dist/schedule/formsForSchedule.cjs.js.map +1 -0
- package/dist/schedule/formsForSchedule.esm.js +6 -0
- package/dist/schedule/formsForSchedule.esm.js.map +1 -0
- package/dist/schedule/schedulePane.d.ts +2 -4
- package/dist/schedule/schedulePane2.cjs.js +8 -0
- package/dist/schedule/schedulePane2.cjs.js.map +1 -0
- package/dist/schedule/schedulePane2.esm.js +384 -0
- package/dist/schedule/schedulePane2.esm.js.map +1 -0
- package/dist/sharing/sharingPane.cjs.js +2 -0
- package/dist/sharing/sharingPane.cjs.js.map +1 -0
- package/dist/sharing/sharingPane.esm.js +22 -0
- package/dist/sharing/sharingPane.esm.js.map +1 -0
- package/dist/slideshow/slideshowPane.cjs.js +2 -0
- package/dist/slideshow/slideshowPane.cjs.js.map +1 -0
- package/dist/slideshow/slideshowPane.esm.js +46 -0
- package/dist/slideshow/slideshowPane.esm.js.map +1 -0
- package/dist/social/editProfileDetails.cjs.js +2 -0
- package/dist/social/editProfileDetails.cjs.js.map +1 -0
- package/dist/social/editProfileDetails.d.ts +1 -2
- package/dist/social/editProfileDetails.esm.js +12 -0
- package/dist/social/editProfileDetails.esm.js.map +1 -0
- package/dist/social/icons.cjs.js +82 -0
- package/dist/social/icons.cjs.js.map +1 -0
- package/dist/social/{icons.js → icons.esm.js} +12 -18
- package/dist/social/icons.esm.js.map +1 -0
- package/dist/social/socialPane.d.ts +2 -3
- package/dist/social/socialPane2.cjs.js +6 -0
- package/dist/social/socialPane2.cjs.js.map +1 -0
- package/dist/social/socialPane2.esm.js +326 -0
- package/dist/social/socialPane2.esm.js.map +1 -0
- package/dist/social/socialSections.cjs.js +2 -0
- package/dist/social/socialSections.cjs.js.map +1 -0
- package/dist/social/socialSections.d.ts +2 -2
- package/dist/social/socialSections.esm.js +221 -0
- package/dist/social/socialSections.esm.js.map +1 -0
- package/dist/social/spinner.cjs.js +1 -0
- package/dist/social/spinner.esm.js +1 -0
- package/dist/social/triage.cjs.js +2 -0
- package/dist/social/triage.cjs.js.map +1 -0
- package/dist/social/triage.d.ts +2 -2
- package/dist/social/triage.esm.js +44 -0
- package/dist/social/triage.esm.js.map +1 -0
- package/dist/tabbed/tabbedPane.cjs.js +2 -0
- package/dist/tabbed/tabbedPane.cjs.js.map +1 -0
- package/dist/tabbed/tabbedPane.d.ts +1 -1
- package/dist/tabbed/tabbedPane.esm.js +38 -0
- package/dist/tabbed/tabbedPane.esm.js.map +1 -0
- package/dist/tableViewPane.cjs.js +2 -0
- package/dist/tableViewPane.cjs.js.map +1 -0
- package/dist/tableViewPane.esm.js +20 -0
- package/dist/tableViewPane.esm.js.map +1 -0
- package/dist/transaction/pane.cjs.js +8 -0
- package/dist/transaction/pane.cjs.js.map +1 -0
- package/dist/transaction/pane.esm.js +212 -0
- package/dist/transaction/pane.esm.js.map +1 -0
- package/dist/transaction/period.cjs.js +4 -0
- package/dist/transaction/period.cjs.js.map +1 -0
- package/dist/transaction/period.esm.js +126 -0
- package/dist/transaction/period.esm.js.map +1 -0
- package/dist/trip/tripPane.cjs.js +2 -0
- package/dist/trip/tripPane.cjs.js.map +1 -0
- package/dist/trip/tripPane.esm.js +85 -0
- package/dist/trip/tripPane.esm.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.dom.cjs.js +2 -0
- package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.dom.esm.js +108 -0
- package/dist/trustedApplications/trustedApplications.dom.esm.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.utils.cjs.js +2 -0
- package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.utils.esm.js +20 -0
- package/dist/trustedApplications/trustedApplications.utils.esm.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.view.cjs.js +2 -0
- package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -0
- package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.view.esm.js +41 -0
- package/dist/trustedApplications/trustedApplications.view.esm.js.map +1 -0
- package/dist/ui/pane.cjs.js +4 -0
- package/dist/ui/pane.cjs.js.map +1 -0
- package/dist/ui/pane.esm.js +56 -0
- package/dist/ui/pane.esm.js.map +1 -0
- package/dist/versionInfo.cjs.js +2 -0
- package/dist/versionInfo.cjs.js.map +1 -0
- package/dist/versionInfo.esm.js +40 -0
- package/dist/versionInfo.esm.js.map +1 -0
- package/dist/video/videoPane.cjs.js +2 -0
- package/dist/video/videoPane.cjs.js.map +1 -0
- package/dist/video/videoPane.esm.js +25 -0
- package/dist/video/videoPane.esm.js.map +1 -0
- package/package.json +35 -62
- package/dist/0314353e28ce6e5539af.svg +0 -9
- package/dist/04567ff683933c35c465.png +0 -0
- package/dist/10163fd9b5a0e00d63a0.png +0 -0
- package/dist/1234dcb2eec2e45f252b.png +0 -0
- package/dist/20899934157df4db56cb.png +0 -0
- package/dist/33760bf79f097f449da5.png +0 -0
- package/dist/4cceba29ab33b1ddd9bb.svg +0 -6
- package/dist/578d2b6ed32e7624164e.png +0 -0
- package/dist/5f62a5b2b7e99b9640c7.png +0 -0
- package/dist/6525766ecd288ec60129.png +0 -0
- package/dist/7800be6f6c4b5b0f4f20.png +0 -0
- package/dist/7b7538c6f6b317968009.svg +0 -9
- package/dist/92d03142abe6efc0b42d.svg +0 -6
- package/dist/976473cf5fe24d657d4b.png +0 -0
- package/dist/RDFXMLPane.css +0 -70
- package/dist/RDFXMLPane.js +0 -100
- package/dist/argument/argumentPane.js +0 -60
- package/dist/attach/attachPane.js +0 -393
- package/dist/audio/audioPane.js +0 -181
- package/dist/bda84f59e7216675a208.png +0 -0
- package/dist/cd68e8f3990ba8b2139e.png +0 -0
- package/dist/classInstancePane.js +0 -91
- package/dist/dashboard/basicPreferences.js +0 -147
- package/dist/dashboard/dashboardPane.js +0 -73
- package/dist/dashboard/homepage.js +0 -42
- package/dist/dataContentPane.css +0 -271
- package/dist/dataContentPane.js +0 -226
- package/dist/defaultPane.css +0 -97
- package/dist/defaultPane.js +0 -81
- package/dist/dokieli/dokieliPane.js +0 -74
- package/dist/e7074a7e2cb69e51cfd3.png +0 -0
- package/dist/f3772696fb7ee53c23d8.png +0 -0
- package/dist/form/formPane.css +0 -120
- package/dist/form/pane.js +0 -250
- package/dist/home/homePane.js +0 -74
- package/dist/humanReadablePane.css +0 -129
- package/dist/humanReadablePane.js +0 -243
- package/dist/icons/clock.svg +0 -7
- package/dist/icons/comment.svg +0 -6
- package/dist/icons/dashboard.svg +0 -9
- package/dist/icons/downArrow.svg +0 -6
- package/dist/icons/folder.svg +0 -6
- package/dist/icons/friends.svg +0 -9
- package/dist/icons/help.svg +0 -8
- package/dist/icons/iconHelper.js +0 -23
- package/dist/icons/person.svg +0 -6
- package/dist/icons/personInCircle.svg +0 -8
- package/dist/icons/sharing.svg +0 -10
- package/dist/icons/signOut.svg +0 -8
- package/dist/icons/signUp.svg +0 -9
- package/dist/icons/star.svg +0 -3
- package/dist/imagePane.css +0 -4
- package/dist/imagePane.js +0 -67
- package/dist/index.js +0 -123
- package/dist/internal/internalPane.css +0 -14
- package/dist/internal/internalPane.js +0 -183
- package/dist/mainPage/footer.js +0 -29
- package/dist/mainPage/header.js +0 -203
- package/dist/mainPage/index.js +0 -78
- package/dist/mainPage/menu.css +0 -243
- package/dist/mainPage/menu.js +0 -449
- package/dist/microblogPane/mbStyle.css +0 -267
- package/dist/microblogPane/microblogPane.js +0 -1031
- package/dist/n3Pane.css +0 -49
- package/dist/n3Pane.js +0 -88
- package/dist/outline/context.js +0 -21
- package/dist/outline/manager.css +0 -78
- package/dist/outline/manager.js +0 -2115
- package/dist/outline/outlineIcons.js +0 -126
- package/dist/outline/propertyViews.js +0 -43
- package/dist/outline/queryByExample.js +0 -285
- package/dist/outline/userInput.js +0 -1821
- package/dist/outline/viewAsImage.js +0 -14
- package/dist/outline/viewAsMbox.js +0 -21
- package/dist/pad/padPane.css +0 -40
- package/dist/pad/padPane.js +0 -421
- package/dist/playlist/playlistPane.js +0 -119
- package/dist/profileUtils/ownerProfile.js +0 -84
- package/dist/registerPanes.js +0 -145
- package/dist/schedule/schedulePane.css +0 -294
- package/dist/schedule/schedulePane.js +0 -1022
- package/dist/sharing/sharingPane.js +0 -48
- package/dist/slideshow/slideshowPane.js +0 -79
- package/dist/social/editProfileDetails.js +0 -362
- package/dist/social/socialPane.css +0 -1464
- package/dist/social/socialPane.js +0 -651
- package/dist/social/socialSections.js +0 -393
- package/dist/social/spinner.js +0 -13
- package/dist/social/triage.js +0 -79
- package/dist/solid-panes.js +0 -87502
- package/dist/solid-panes.js.map +0 -1
- package/dist/solid-panes.min.js +0 -3811
- package/dist/solid-panes.min.js.map +0 -1
- package/dist/styles/tabbedtab.css +0 -1066
- package/dist/styles/utilities.css +0 -5
- package/dist/tabbed/tabbedPane.js +0 -59
- package/dist/tableViewPane.js +0 -56
- package/dist/transaction/pane.js +0 -477
- package/dist/transaction/period.js +0 -323
- package/dist/trip/tripPane.js +0 -174
- package/dist/trustedApplications/trustedApplications.dom.js +0 -145
- package/dist/trustedApplications/trustedApplications.utils.js +0 -23
- package/dist/trustedApplications/trustedApplications.view.js +0 -55
- package/dist/ui/pane.js +0 -146
- package/dist/versionInfo.js +0 -41
- package/dist/video/videoPane.js +0 -42
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as e from "solid-ui";
|
|
2
|
+
import * as t from "rdflib";
|
|
3
|
+
//#region src/transaction/pane.js
|
|
4
|
+
var n = e.ns, r = {
|
|
5
|
+
icon: e.icons.iconBase + "noun_106746.svg",
|
|
6
|
+
name: "transaction",
|
|
7
|
+
audience: [n.solid("PowerUser")],
|
|
8
|
+
label: function(t, n) {
|
|
9
|
+
let r = n.session.store, i = r.findTypeURIs(t);
|
|
10
|
+
return i["http://www.w3.org/2000/10/swap/pim/qif#Transaction"] ? "$$" : r.any(t, e.ns.qu("amount")) ? "$$$" : i["http://www.w3.org/ns/pim/trip#Trip"] ? "Trip $" : null;
|
|
11
|
+
},
|
|
12
|
+
render: function(r, i) {
|
|
13
|
+
let a = i.dom, o = i.session.store, s = o.fetcher, c = t.Namespace("http://www.w3.org/2000/10/swap/pim/qif#"), l = t.Namespace("http://www.w3.org/ns/pim/trip#"), u = a.createElement("div");
|
|
14
|
+
u.setAttribute("class", "transactionPane");
|
|
15
|
+
let d = function(e, t) {
|
|
16
|
+
t === void 0 && (t = "color: grey");
|
|
17
|
+
let n = a.createElement("pre");
|
|
18
|
+
n.setAttribute("style", t), u.appendChild(n), n.appendChild(a.createTextNode(e));
|
|
19
|
+
}, f = function(e) {
|
|
20
|
+
return d(e, "color: #100; background-color: #fee");
|
|
21
|
+
}, p = o.statementsMatching(r), m = o.statementsMatching(void 0, void 0, r), h = o.findTypeURIs(r), g = {}, _ = function(e) {
|
|
22
|
+
g[e.uri] = !0;
|
|
23
|
+
}, v = function(t) {
|
|
24
|
+
let n = "padding: 0.5em 1.5em 1em 1.5em; ";
|
|
25
|
+
if (t) {
|
|
26
|
+
let r = o.any(t, e.ns.ui("backgroundColor"));
|
|
27
|
+
r && (n += "background-color: " + r.value + "; ");
|
|
28
|
+
}
|
|
29
|
+
u.setAttribute("style", n);
|
|
30
|
+
}, y = function(e) {
|
|
31
|
+
if (e === void 0) return "";
|
|
32
|
+
let t = "" + e;
|
|
33
|
+
return t.indexOf(".") >= 0 ? t.split(".")[0] + "." + (t.split(".")[1] + "00").slice(0, 2) : t + ".00";
|
|
34
|
+
}, b = function(e, t) {
|
|
35
|
+
let n = a.createElement("td");
|
|
36
|
+
return 0 + e === 0 && t || (n.textContent = y(e)), n.setAttribute("style", "width: 6em; text-align: right; "), n;
|
|
37
|
+
}, x = function(e) {
|
|
38
|
+
let t = a.createElement("th");
|
|
39
|
+
return t.textContent = e, t.setAttribute("style", "text-align: right; "), t;
|
|
40
|
+
}, S = function(e, t) {
|
|
41
|
+
let r = o.any(e, n.qu("date")), i = o.any(t, n.qu("date"));
|
|
42
|
+
if (r !== void 0 && i !== void 0) {
|
|
43
|
+
if (r.value < i.value) return -1;
|
|
44
|
+
if (r.value > i.value) return 1;
|
|
45
|
+
}
|
|
46
|
+
return e.uri < t.uri ? -1 : +(e.uri > t.uri);
|
|
47
|
+
}, C = function(e, t, n) {
|
|
48
|
+
let r = e.session.paneRegistry.byName(n).render(t, e);
|
|
49
|
+
return r.setAttribute("style", "border: 0.1em solid green;"), r;
|
|
50
|
+
}, w = function(e, t, n, r, a) {
|
|
51
|
+
let o = t.parentNode.children;
|
|
52
|
+
if (a) for (let e = o.length - 1; e >= 0; e--) o[e].expanded && (o[e].parentNode.removeChild(o[e].expanded), o[e].expanded = !1);
|
|
53
|
+
let s = e.createElement("tr"), c = s.appendChild(e.createElement("td"));
|
|
54
|
+
c.setAttribute("style", "width: 98%; padding: 1em; border: 0.1em solid grey;");
|
|
55
|
+
let l = t.children.length;
|
|
56
|
+
t.nextSibling ? t.parentNode.insertBefore(s, t.nextSibling) : t.parentNode.appendChild(s), t.expanded = s, c.setAttribute("colspan", "" + l), c.appendChild(C(i, n, r));
|
|
57
|
+
}, T = function(e, t, n, r, i) {
|
|
58
|
+
t.expanded ? (t.parentNode.removeChild(t.expanded), t.expanded = !1) : w(e, t, n, r, i);
|
|
59
|
+
}, E = function(t, r, i) {
|
|
60
|
+
let a = t.createElement("table");
|
|
61
|
+
a.setAttribute("style", "padding-left: 0.5em; padding-right: 0.5em; font-size: 9pt; width: 85%;");
|
|
62
|
+
let s = function(t, r) {
|
|
63
|
+
let i = t.createElement("tr");
|
|
64
|
+
(function(t, n) {
|
|
65
|
+
let r = "'padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.1em;";
|
|
66
|
+
if (n) {
|
|
67
|
+
let t = o.any(n, e.ns.ui("backgroundColor"));
|
|
68
|
+
t && (r += "background-color: " + t.value + "; ");
|
|
69
|
+
}
|
|
70
|
+
t.setAttribute("style", r);
|
|
71
|
+
})(i, o.any(r, n.qu("toAccount")));
|
|
72
|
+
let a = i.appendChild(t.createElement("td")), s = o.any(r, n.qu("date"));
|
|
73
|
+
a.textContent = s ? s.value.slice(0, 10) : "???", a.setAttribute("style", "width: 7em;");
|
|
74
|
+
let c = i.appendChild(t.createElement("td"));
|
|
75
|
+
c.setAttribute("style", "width: 36em;");
|
|
76
|
+
let l = o.any(r, n.qu("payee"));
|
|
77
|
+
c.textContent = l ? l.value : "???";
|
|
78
|
+
let u = c.appendChild(t.createElement("a"));
|
|
79
|
+
u.textContent = " ➜", u.setAttribute("href", r.uri);
|
|
80
|
+
let d = i.appendChild(t.createElement("td")), f = o.any(r, n.qu("in_USD"));
|
|
81
|
+
return d.textContent = f ? y(f.value) : "???", d.setAttribute("style", "width: 6em; text-align: right; "), i.addEventListener("click", function(e) {
|
|
82
|
+
T(t, i, r, "transaction", !e.shiftKey);
|
|
83
|
+
}, !1), i;
|
|
84
|
+
}, c = i ? r.filter(i) : r.slice();
|
|
85
|
+
c.sort(S);
|
|
86
|
+
for (let e = 0; e < c.length; e++) a.appendChild(s(t, c[e]));
|
|
87
|
+
return a;
|
|
88
|
+
};
|
|
89
|
+
if (h["http://www.w3.org/2000/10/swap/pim/qif#Transaction"] || o.any(r, n.qu("toAccount"))) {
|
|
90
|
+
_(n.rdf("type"));
|
|
91
|
+
let d = o.any(r, e.ns.qu("toAccount"));
|
|
92
|
+
v(d), d || f("(Error: There is no bank account known for this transaction <" + r.uri + ">,\n -- every transaction needs one.)");
|
|
93
|
+
let h = null, y = o.any(r, e.ns.qu("accordingTo"));
|
|
94
|
+
y === void 0 ? f("(Error: There is no back link to the original data source foir this transaction <" + r.uri + ">,\nso I can't tell how to annotate it.)") : (h = y === void 0 ? null : o.any(y, e.ns.qu("annotationStore")), h === void 0 && f("(There is no annotation document for this statement\n<" + y.uri + ">,\nso you cannot classify this transaction.)"));
|
|
95
|
+
let b = a.createElement("div");
|
|
96
|
+
b.setAttribute("style", "float:right"), u.appendChild(b);
|
|
97
|
+
let x = function(t, n) {
|
|
98
|
+
_(t);
|
|
99
|
+
let i = o.any(r, t);
|
|
100
|
+
if (!i) return;
|
|
101
|
+
let s = a.createElement("a");
|
|
102
|
+
s.setAttribute("href", i.uri), s.setAttribute("style", "float:right"), b.appendChild(s).textContent = n || e.utils.label(i), b.appendChild(a.createElement("br"));
|
|
103
|
+
};
|
|
104
|
+
x(e.ns.qu("toAccount")), x(e.ns.qu("accordingTo"), "Statement"), x(l("trip"));
|
|
105
|
+
let S = a.createElement("table");
|
|
106
|
+
u.appendChild(S), S.innerHTML = [
|
|
107
|
+
"date",
|
|
108
|
+
"payee",
|
|
109
|
+
"amount",
|
|
110
|
+
"in_USD",
|
|
111
|
+
"currency"
|
|
112
|
+
].map(c).map(function(t) {
|
|
113
|
+
_(t);
|
|
114
|
+
let n = o.any(r, t), i = n ? e.utils.labelForXML(n) : "";
|
|
115
|
+
return "<tr><td style=\"text-align: right; padding-right: 0.6em\">" + e.utils.labelForXML(t) + "</td><td style=\"font-weight: bold;\">" + i + "</td></tr>";
|
|
116
|
+
}).join("\n");
|
|
117
|
+
let C = function(e, t) {
|
|
118
|
+
e || f("Sorry, failed to save your change:\n" + t);
|
|
119
|
+
};
|
|
120
|
+
h && o.fetcher.nowOrWhenFetched(h.uri, r, function(c, d) {
|
|
121
|
+
c || f("Cannot load store " + h + " " + d);
|
|
122
|
+
let v = o.any(h, n.qu("calendarYear")), y = function() {
|
|
123
|
+
u.insertBefore(e.widgets.makeSelectForNestedCategory(a, o, r, e.ns.qu("Classified"), h, C), S.nextSibling);
|
|
124
|
+
};
|
|
125
|
+
o.any(void 0, n.rdfs("subClassOf"), n.qu.Classified) ? y() : v ? s.load(v).then(function(e) {
|
|
126
|
+
s.load(o.each(v, n.rdfs("seeAlso"))).then(function() {
|
|
127
|
+
y();
|
|
128
|
+
}).catch(function(e) {
|
|
129
|
+
console.log("Error loading background data: " + e);
|
|
130
|
+
});
|
|
131
|
+
}).catch(function(e) {
|
|
132
|
+
console.log("Error loading calendarYear: " + e);
|
|
133
|
+
}) : console.log("Can't get categories, because no calendarYear"), u.appendChild(e.widgets.makeDescription(a, o, r, e.ns.rdfs("comment"), h, C));
|
|
134
|
+
let b = o.statementsMatching(void 0, l("trip"), void 0, h).map(function(e) {
|
|
135
|
+
return e.object;
|
|
136
|
+
}), x = o.each(void 0, e.ns.rdf("type"), l("Trip"));
|
|
137
|
+
b = b.concat(x).sort(), b = function(e, t, n, r) {
|
|
138
|
+
let i = t.map(function(t) {
|
|
139
|
+
let r = e.any(t, n);
|
|
140
|
+
return r = r ? r.value : "9999-12-31", [r, t];
|
|
141
|
+
});
|
|
142
|
+
return i.sort(), r && i.reverse(), i.map(function(e) {
|
|
143
|
+
return e[1];
|
|
144
|
+
});
|
|
145
|
+
}(o, b, e.ns.cal("dtstart"), !0), b.length > 1 && u.appendChild(e.widgets.makeSelectForOptions(a, o, r, l("trip"), b, {
|
|
146
|
+
multiple: !1,
|
|
147
|
+
nullLabel: "-- what trip? --",
|
|
148
|
+
mint: "New Trip *",
|
|
149
|
+
mintClass: l("Trip"),
|
|
150
|
+
mintStatementsFun: function(n) {
|
|
151
|
+
let r = [];
|
|
152
|
+
return r.push(t.st(n, e.ns.rdf("type"), l("Trip"), n.doc())), r;
|
|
153
|
+
}
|
|
154
|
+
}, h, C)), u.appendChild(a.createElement("br"));
|
|
155
|
+
let w = i.getOutliner(a);
|
|
156
|
+
_(n.rdfs("comment")), e.widgets.attachmentList(a, r, u), _(n.wf("attachment")), u.appendChild(a.createElement("tr")).setAttribute("style", "height: 1em"), w.appendPropertyTRs(u, p, !1, function(e, t) {
|
|
157
|
+
return !(e.uri in g);
|
|
158
|
+
}), w.appendPropertyTRs(u, m, !0, function(e, t) {
|
|
159
|
+
return !(e.uri in g);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
} else h["http://www.w3.org/ns/pim/trip#Trip"] && function() {
|
|
163
|
+
let t = {}, i = {}, s = {}, c = o.each(void 0, l("trip"), r), d = c.map(function(e) {
|
|
164
|
+
return e.doc();
|
|
165
|
+
});
|
|
166
|
+
o.fetcher.load(d).then(function() {
|
|
167
|
+
c.forEach(function(r) {
|
|
168
|
+
let a = o.the(r, n.qu("date")), c = a ? ("" + a.value).slice(0, 4) : "????", l = o.the(r, n.rdf("type"));
|
|
169
|
+
if (l ||= e.ns.qu("ErrorNoType"), l && l.uri) {
|
|
170
|
+
let n = l.uri;
|
|
171
|
+
i[c] || (i[c] = 0), s[c] || (s[c] = {}), t[n] || (t[n] = 0), s[c][n] || (s[c][n] = 0);
|
|
172
|
+
let a = o.any(r, e.ns.qu("in_USD"));
|
|
173
|
+
if (a || f("@@ No amount in USD: " + a + " for " + r), a) {
|
|
174
|
+
let e = parseFloat(a.value);
|
|
175
|
+
t[n] += e, s[c][n] += e, i[c] += e;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
let l = [], d = 0, p = [], m;
|
|
180
|
+
for (let e in s) Object.prototype.hasOwnProperty.call(s, e) && p.push(e);
|
|
181
|
+
p.sort();
|
|
182
|
+
let h = p.length, g, _ = u.appendChild(a.createElement("table"));
|
|
183
|
+
if (_.setAttribute("style", "font-size: 120%; margin-left:auto; margin-right:1em; margin-top: 1em; border: 0.05em solid gray; padding: 1em;"), h > 1) {
|
|
184
|
+
let e = _.appendChild(a.createElement("tr"));
|
|
185
|
+
for (e.appendChild(x("")), m = 0; m < h; m++) e.appendChild(x(p[m]));
|
|
186
|
+
e.appendChild(x("total"));
|
|
187
|
+
}
|
|
188
|
+
for (let e in t) Object.prototype.hasOwnProperty.call(t, e) && (l.push(e), d += t[e]);
|
|
189
|
+
l.sort();
|
|
190
|
+
let v, S, C;
|
|
191
|
+
for (let n = 0; n < l.length; n++) {
|
|
192
|
+
let r = o.sym(l[n]);
|
|
193
|
+
if (v = _.appendChild(a.createElement("tr")), S = v.appendChild(a.createElement("td")), S.textContent = e.utils.label(r), h > 1) for (m = 0; m < h; m++) C = s[p[m]][l[n]], g = v.appendChild(b(C, !0));
|
|
194
|
+
v.appendChild(b(t[l[n]], !0));
|
|
195
|
+
}
|
|
196
|
+
if (l.length > 1) {
|
|
197
|
+
if (v = _.appendChild(a.createElement("tr")), v.appendChild(x("total")), h > 1) for (m = 0; m < h; m++) C = i[p[m]], g = v.appendChild(b(C ? y(C) : ""));
|
|
198
|
+
g = v.appendChild(b(d)), g.setAttribute("style", "font-weight: bold; text-align: right;");
|
|
199
|
+
}
|
|
200
|
+
let w = E(a, c);
|
|
201
|
+
w.setAttribute("style", "margin-left:auto; margin-right:1em; margin-top: 1em; border: padding: 1em;"), u.appendChild(w), e.widgets.attachmentList(a, r, u);
|
|
202
|
+
}).catch(function(e) {
|
|
203
|
+
f("Error loading transactions: " + e);
|
|
204
|
+
});
|
|
205
|
+
}();
|
|
206
|
+
return u;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
//#endregion
|
|
210
|
+
export { r as default };
|
|
211
|
+
|
|
212
|
+
//# sourceMappingURL=pane.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pane.esm.js","names":["ns"],"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 (Object.prototype.hasOwnProperty.call(yearCategoryTotal, 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 (Object.prototype.hasOwnProperty.call(total, 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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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js");let t=require("solid-ui");t=e.__toESM(t);var n=t.ns,r={icon:t.icons.iconBase+`noun_142708.svg`,name:`period`,audience:[n.solid(`PowerUser`)],label:function(e,t){return t.session.store.findTypeURIs(e)[`http://www.w3.org/2000/10/swap/pim/qif#Period`]?`period`:null},render:function(e,n){let r=n.dom,i=n.session.store,a=t.ns,o=r.createElement(`div`);o.setAttribute(`class`,`periodPane`);let s=function(e,t){t||=`color: grey;`;let n=r.createElement(`pre`);n.setAttribute(`style`,t),o.appendChild(n),n.appendChild(r.createTextNode(e))},c=function(e){return s(`✓ `+e,`color: #010; background-color: #efe`)},l=function(e){return s(e,`color: #100; background-color: #fee`)},u=function(){let s=i.any(e,a.cal(`dtstart`));s===void 0&&l(`(Error: There is no start date known for this period <`+e.uri+`>,
|
|
2
|
+
-- every period needs one.)`);let u=i.any(e,a.cal(`dtend`));u===void 0&&l(`(Error: There is no end date known for this period <`+e.uri+`>,
|
|
3
|
+
-- every period needs one.)`);let d={};(function(e){d[e.uri]=!0})(a.rdf(`type`));let f=function(e){return!!(e&&e>=s&&e<u)},p=function(e){let t=``+e;return t.indexOf(`.`)>=0?t.split(`.`)[0]+`.`+(t.split(`.`)[1]+`00`).slice(0,2):t+`.00`},m=function(e){return f(i.any(e,a.qu(`date`)))},h=function(e,t){let n=i.any(e,a.qu(`date`)),r=i.any(t,a.qu(`date`));if(n!==void 0&&r!==void 0){if(n.value<r.value)return-1;if(n.value>r.value)return 1}return e.uri<t.uri?-1:+(e.uri>t.uri)},g=o.appendChild(r.createElement(`h2`));g.textContent=`Period `+s.value.slice(0,10)+` - `+u.value.slice(0,10);let _=function(e,t,n){let r=e.session.paneRegistry.byName(n).render(t,e);return r.setAttribute(`style`,`border: 0.1em solid green;`),r},v=function(e,t,r,i,a){let o=t.parentNode.children;if(a)for(let e=o.length-1;e>=0;e--)o[e].expanded&&(o[e].parentNode.removeChild(o[e].expanded),o[e].expanded=!1);let s=e.createElement(`tr`),c=s.appendChild(e.createElement(`td`));c.setAttribute(`style`,`width: 98%; padding: 1em; border: 0.1em solid grey;`);let l=t.children.length;t.nextSibling?t.parentNode.insertBefore(s,t.nextSibling):t.parentNode.appendChild(s),t.expanded=s,c.setAttribute(`colspan`,``+l),c.appendChild(_(n,r,i))},y=function(e,t,n,r,i){t.expanded?(t.parentNode.removeChild(t.expanded),t.expanded=!1):v(e,t,n,r,i)},b=function(e,n){let r=e.createElement(`table`);r.setAttribute(`style`,`margin-left: 100; font-size: 9pt; width: 85%;`);let o=function(e,n){let r=e.createElement(`tr`);(function(e,n){let r=`margin-left: 8em; padding-left: 5em;`;if(n){let e=i.any(n,t.ns.ui(`backgroundColor`));e&&(r+=`background-color: `+e.value+`; `)}e.setAttribute(`style`,r)})(r,i.any(n,a.qu(`toAccount`)));let o=r.appendChild(e.createElement(`td`)),s=i.any(n,a.qu(`date`));o.textContent=s?s.value.slice(0,10):`???`,o.setAttribute(`style`,`width: 7em;`);let c=r.appendChild(e.createElement(`td`));c.setAttribute(`style`,`width: 36em;`);let l=i.any(n,a.qu(`payee`));c.textContent=l?l.value:`???`;let u=c.appendChild(e.createElement(`a`));u.textContent=` ➜`,u.setAttribute(`href`,n.uri);let d=r.appendChild(e.createElement(`td`)),f=i.any(n,a.qu(`in_USD`));return d.textContent=f?p(f.value):`???`,d.setAttribute(`style`,`width: 6em; text-align: right; `),r.addEventListener(`click`,function(t){y(e,r,n,`transaction`,!t.shiftKey)},!1),r},s=n.filter(m);s.sort(h);for(let t=0;t<s.length;t++)r.appendChild(o(e,s[t]));return r},x={"http://www.w3.org/2000/10/swap/pim/qif#Transaction":!0,"http://www.w3.org/2000/10/swap/pim/qif#Unclassified":!0,"http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedOutgoing":!0,"http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedIncome":!0},S=i.findMemberURIs(a.qu(`Transaction`)),C=[],w=[],T,E;for(let e in S)if(Object.prototype.hasOwnProperty.call(S,e)){E=i.sym(e);let t=i.each(E,a.rdf(`type`)),n=!1;for(let e=0;e<t.length;e++)x[t[e].uri]===void 0&&(n=!0);n||(T=i.any(E,a.qu(`in_USD`)),T===void 0&&(T=i.any(E,a.qu(`amount`))),T&&(``+T.value).indexOf(`-`)>=0?w.push(i.sym(e)):C.push(i.sym(e)))}let D,O;C.length?(D=b(r,C),O=D.children.length,o.appendChild(r.createElement(`h3`)).textContent=`Unclassified Income`+(O<4?``:` (`+O+`)`),o.appendChild(D)):c(`No unclassified income`),w.length?(D=b(r,w),O=D.children.length,o.appendChild(r.createElement(`h3`)).textContent=`Unclassified Outgoings`+(O<4?``:` (`+O+`)`),o.appendChild(D)):c(`No unclassified outgoings `);let k=function(e){let t=i.findSubClassesNT(a.qu(`Transaction`));for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&n.slice(1,-1).split(`#`)[1]===e)return i.sym(n.slice(1,-1));return null},A=function(e,n){let s=k(e),c,u=[],d=0;if(!s)return l(`Error: No category correspnding to `+e),null;let f=i.each(void 0,a.rdf(`type`),s);for(let e=0;e<f.length;e++)i.any(f[e],n)||u.push(f[e]);return u.length&&(c=b(r,u),d=c.children.length,o.appendChild(r.createElement(`h3`)).textContent=t.utils.label(s)+` with no `+t.utils.label(n)+(d<4?``:` (`+d+`)`),o.appendChild(c)),d};A(`Reimbursables`,a.trip(`trip`))===0&&c(`Reimbursables all have trips`),A(`Other_Inc_Speaking`,a.trip(`trip`))===0&&c(`Speaking income all has trips`)};if(i.findTypeURIs(e)[`http://www.w3.org/2000/10/swap/pim/qif#Period`]){let t=i.each(e,a.rdfs(`seeAlso`));console.log(`Loading before render: `+t.length),i.fetcher.load(t).then(function(){u()})}return o}};exports.default=r;
|
|
4
|
+
//# sourceMappingURL=period.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"period.cjs.js","names":["UI"],"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 (Object.prototype.hasOwnProperty.call(xURIs, 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 (Object.prototype.hasOwnProperty.call(cats, 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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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as e from "solid-ui";
|
|
2
|
+
//#region src/transaction/period.js
|
|
3
|
+
var t = e.ns, n = {
|
|
4
|
+
icon: e.icons.iconBase + "noun_142708.svg",
|
|
5
|
+
name: "period",
|
|
6
|
+
audience: [t.solid("PowerUser")],
|
|
7
|
+
label: function(e, t) {
|
|
8
|
+
return t.session.store.findTypeURIs(e)["http://www.w3.org/2000/10/swap/pim/qif#Period"] ? "period" : null;
|
|
9
|
+
},
|
|
10
|
+
render: function(t, n) {
|
|
11
|
+
let r = n.dom, i = n.session.store, a = e.ns, o = r.createElement("div");
|
|
12
|
+
o.setAttribute("class", "periodPane");
|
|
13
|
+
let s = function(e, t) {
|
|
14
|
+
t ||= "color: grey;";
|
|
15
|
+
let n = r.createElement("pre");
|
|
16
|
+
n.setAttribute("style", t), o.appendChild(n), n.appendChild(r.createTextNode(e));
|
|
17
|
+
}, c = function(e) {
|
|
18
|
+
return s("✓ " + e, "color: #010; background-color: #efe");
|
|
19
|
+
}, l = function(e) {
|
|
20
|
+
return s(e, "color: #100; background-color: #fee");
|
|
21
|
+
}, u = function() {
|
|
22
|
+
let s = i.any(t, a.cal("dtstart"));
|
|
23
|
+
s === void 0 && l("(Error: There is no start date known for this period <" + t.uri + ">,\n -- every period needs one.)");
|
|
24
|
+
let u = i.any(t, a.cal("dtend"));
|
|
25
|
+
u === void 0 && l("(Error: There is no end date known for this period <" + t.uri + ">,\n -- every period needs one.)");
|
|
26
|
+
let d = {};
|
|
27
|
+
(function(e) {
|
|
28
|
+
d[e.uri] = !0;
|
|
29
|
+
})(a.rdf("type"));
|
|
30
|
+
let f = function(e) {
|
|
31
|
+
return !!(e && e >= s && e < u);
|
|
32
|
+
}, p = function(e) {
|
|
33
|
+
let t = "" + e;
|
|
34
|
+
return t.indexOf(".") >= 0 ? t.split(".")[0] + "." + (t.split(".")[1] + "00").slice(0, 2) : t + ".00";
|
|
35
|
+
}, m = function(e) {
|
|
36
|
+
return f(i.any(e, a.qu("date")));
|
|
37
|
+
}, h = function(e, t) {
|
|
38
|
+
let n = i.any(e, a.qu("date")), r = i.any(t, a.qu("date"));
|
|
39
|
+
if (n !== void 0 && r !== void 0) {
|
|
40
|
+
if (n.value < r.value) return -1;
|
|
41
|
+
if (n.value > r.value) return 1;
|
|
42
|
+
}
|
|
43
|
+
return e.uri < t.uri ? -1 : +(e.uri > t.uri);
|
|
44
|
+
}, g = o.appendChild(r.createElement("h2"));
|
|
45
|
+
g.textContent = "Period " + s.value.slice(0, 10) + " - " + u.value.slice(0, 10);
|
|
46
|
+
let _ = function(e, t, n) {
|
|
47
|
+
let r = e.session.paneRegistry.byName(n).render(t, e);
|
|
48
|
+
return r.setAttribute("style", "border: 0.1em solid green;"), r;
|
|
49
|
+
}, v = function(e, t, r, i, a) {
|
|
50
|
+
let o = t.parentNode.children;
|
|
51
|
+
if (a) for (let e = o.length - 1; e >= 0; e--) o[e].expanded && (o[e].parentNode.removeChild(o[e].expanded), o[e].expanded = !1);
|
|
52
|
+
let s = e.createElement("tr"), c = s.appendChild(e.createElement("td"));
|
|
53
|
+
c.setAttribute("style", "width: 98%; padding: 1em; border: 0.1em solid grey;");
|
|
54
|
+
let l = t.children.length;
|
|
55
|
+
t.nextSibling ? t.parentNode.insertBefore(s, t.nextSibling) : t.parentNode.appendChild(s), t.expanded = s, c.setAttribute("colspan", "" + l), c.appendChild(_(n, r, i));
|
|
56
|
+
}, y = function(e, t, n, r, i) {
|
|
57
|
+
t.expanded ? (t.parentNode.removeChild(t.expanded), t.expanded = !1) : v(e, t, n, r, i);
|
|
58
|
+
}, b = function(t, n) {
|
|
59
|
+
let r = t.createElement("table");
|
|
60
|
+
r.setAttribute("style", "margin-left: 100; font-size: 9pt; width: 85%;");
|
|
61
|
+
let o = function(t, n) {
|
|
62
|
+
let r = t.createElement("tr");
|
|
63
|
+
(function(t, n) {
|
|
64
|
+
let r = "margin-left: 8em; padding-left: 5em;";
|
|
65
|
+
if (n) {
|
|
66
|
+
let t = i.any(n, e.ns.ui("backgroundColor"));
|
|
67
|
+
t && (r += "background-color: " + t.value + "; ");
|
|
68
|
+
}
|
|
69
|
+
t.setAttribute("style", r);
|
|
70
|
+
})(r, i.any(n, a.qu("toAccount")));
|
|
71
|
+
let o = r.appendChild(t.createElement("td")), s = i.any(n, a.qu("date"));
|
|
72
|
+
o.textContent = s ? s.value.slice(0, 10) : "???", o.setAttribute("style", "width: 7em;");
|
|
73
|
+
let c = r.appendChild(t.createElement("td"));
|
|
74
|
+
c.setAttribute("style", "width: 36em;");
|
|
75
|
+
let l = i.any(n, a.qu("payee"));
|
|
76
|
+
c.textContent = l ? l.value : "???";
|
|
77
|
+
let u = c.appendChild(t.createElement("a"));
|
|
78
|
+
u.textContent = " ➜", u.setAttribute("href", n.uri);
|
|
79
|
+
let d = r.appendChild(t.createElement("td")), f = i.any(n, a.qu("in_USD"));
|
|
80
|
+
return d.textContent = f ? p(f.value) : "???", d.setAttribute("style", "width: 6em; text-align: right; "), r.addEventListener("click", function(e) {
|
|
81
|
+
y(t, r, n, "transaction", !e.shiftKey);
|
|
82
|
+
}, !1), r;
|
|
83
|
+
}, s = n.filter(m);
|
|
84
|
+
s.sort(h);
|
|
85
|
+
for (let e = 0; e < s.length; e++) r.appendChild(o(t, s[e]));
|
|
86
|
+
return r;
|
|
87
|
+
}, x = {
|
|
88
|
+
"http://www.w3.org/2000/10/swap/pim/qif#Transaction": !0,
|
|
89
|
+
"http://www.w3.org/2000/10/swap/pim/qif#Unclassified": !0,
|
|
90
|
+
"http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedOutgoing": !0,
|
|
91
|
+
"http://www.w3.org/2000/10/swap/pim/qif#UnclassifiedIncome": !0
|
|
92
|
+
}, S = i.findMemberURIs(a.qu("Transaction")), C = [], w = [], T, E;
|
|
93
|
+
for (let e in S) if (Object.prototype.hasOwnProperty.call(S, e)) {
|
|
94
|
+
E = i.sym(e);
|
|
95
|
+
let t = i.each(E, a.rdf("type")), n = !1;
|
|
96
|
+
for (let e = 0; e < t.length; e++) x[t[e].uri] === void 0 && (n = !0);
|
|
97
|
+
n || (T = i.any(E, a.qu("in_USD")), T === void 0 && (T = i.any(E, a.qu("amount"))), T && ("" + T.value).indexOf("-") >= 0 ? w.push(i.sym(e)) : C.push(i.sym(e)));
|
|
98
|
+
}
|
|
99
|
+
let D, O;
|
|
100
|
+
C.length ? (D = b(r, C), O = D.children.length, o.appendChild(r.createElement("h3")).textContent = "Unclassified Income" + (O < 4 ? "" : " (" + O + ")"), o.appendChild(D)) : c("No unclassified income"), w.length ? (D = b(r, w), O = D.children.length, o.appendChild(r.createElement("h3")).textContent = "Unclassified Outgoings" + (O < 4 ? "" : " (" + O + ")"), o.appendChild(D)) : c("No unclassified outgoings ");
|
|
101
|
+
let k = function(e) {
|
|
102
|
+
let t = i.findSubClassesNT(a.qu("Transaction"));
|
|
103
|
+
for (let n in t) if (Object.prototype.hasOwnProperty.call(t, n) && n.slice(1, -1).split("#")[1] === e) return i.sym(n.slice(1, -1));
|
|
104
|
+
return null;
|
|
105
|
+
}, A = function(t, n) {
|
|
106
|
+
let s = k(t), c, u = [], d = 0;
|
|
107
|
+
if (!s) return l("Error: No category correspnding to " + t), null;
|
|
108
|
+
let f = i.each(void 0, a.rdf("type"), s);
|
|
109
|
+
for (let e = 0; e < f.length; e++) i.any(f[e], n) || u.push(f[e]);
|
|
110
|
+
return u.length && (c = b(r, u), d = c.children.length, o.appendChild(r.createElement("h3")).textContent = e.utils.label(s) + " with no " + e.utils.label(n) + (d < 4 ? "" : " (" + d + ")"), o.appendChild(c)), d;
|
|
111
|
+
};
|
|
112
|
+
A("Reimbursables", a.trip("trip")) === 0 && c("Reimbursables all have trips"), A("Other_Inc_Speaking", a.trip("trip")) === 0 && c("Speaking income all has trips");
|
|
113
|
+
};
|
|
114
|
+
if (i.findTypeURIs(t)["http://www.w3.org/2000/10/swap/pim/qif#Period"]) {
|
|
115
|
+
let e = i.each(t, a.rdfs("seeAlso"));
|
|
116
|
+
console.log("Loading before render: " + e.length), i.fetcher.load(e).then(function() {
|
|
117
|
+
u();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return o;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
export { n as default };
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=period.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"period.esm.js","names":["ns"],"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 (Object.prototype.hasOwnProperty.call(xURIs, 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 (Object.prototype.hasOwnProperty.call(cats, 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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js");let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns,i={icon:t.icons.iconBase+`noun_62007.svg`,name:`travel expenses`,audience:[r.solid(`PowerUser`)],label:function(e,n){let r=n.session.store,i=r.findTypeURIs(e);return t.ns.qu(`Transaction`)in r.findSuperClassesNT(e)?`by Trip`:i[`http://www.w3.org/ns/pim/trip#Trip`]?`Trip $`:null},render:function(e,r){let i=r.dom,a=r.store,o=t.ns,s=n.Namespace(`http://www.w3.org/2002/12/cal/ical#`),c=n.Namespace(`http://www.w3.org/ns/pim/trip#`),l=i.createElement(`div`);l.setAttribute(`class`,`transactionPane`),l.innerHTML=`<h2>Trip transactions</h2>`;let u=function(e,t){t===void 0&&(t=`color: grey`);let n=i.createElement(`pre`);n.setAttribute(`style`,t),l.appendChild(n),n.appendChild(i.createTextNode(e))},d=a.findTypeURIs(e),f=function(e,r){let s=new n.Query(t.utils.label(e)),l=[`date`,`transaction`,`comment`,`type`,`in_USD`],d={};l.forEach(function(e){s.vars.push(d[e]=n.variable(e))}),s.pat.add(d.transaction,c(`trip`),e);let f=a.formula();f.add(d.transaction,o.rdf(`type`),d.type),s.pat.optional.push(f),s.pat.add(d.transaction,t.ns.qu(`date`),d.date),f.add(d.transaction,o.rdfs(`comment`),d.comment),s.pat.optional.push(f),s.pat.add(d.transaction,t.ns.qu(`in_USD`),d.in_USD);let p=t.table(i,{query:s,onDone:function(){let n={},r=a.each(void 0,c(`trip`),e);r.forEach(function(e){let r=a.the(e,o.rdf(`type`));if(r||=t.ns.qu(`ErrorNoType`),r&&r.uri){let i=r.uri;n[i]||(n[i]=0);let o=a.any(e,t.ns.qu(`in_USD`));o||u(` @@ No amount in USD: `+o+` for `+e),o&&(n[i]=n[i]+parseFloat(o.value))}});let i=``,s=0,l=0;for(let e in n)i+=t.utils.label(a.sym(e))+`: `+n[e]+`; `,s++,l+=n[e];u(`Totals of `+r.length+` transactions: `+i,``),s>1&&u(`Overall net: `+l,`text-treatment: bold;`)}});r.appendChild(p)};if(t.ns.qu(`Transaction`)in a.findSuperClassesNT(e)){let n=a.each(void 0,o.rdf(`type`),e),r=[],i=[];for(let e=0;e<n.length;e++){let o=n[e],s=a.any(o,c(`trip`));if(!s)r.push(o);else{o in i||(i[s]={total:0,transactions:[]});let e=a.any(o,t.ns.qu(`in_USD`));e&&(i[s].total+=e);let n=a.any(o,t.ns.qu(`date`));i[s.toNT()].transactions.push([n,o])}}let u=[];for(let e in i){let t=a.fromNT(e);u.push([a.any(t,s(`dtstart`)),t])}u.sort();for(let e=0;e<u.length;e++){let t=u[e][1];f(t,l)}}else d[`http://www.w3.org/ns/pim/trip#Trip`]&&f(e,l);return l}};exports.default=i;
|
|
2
|
+
//# sourceMappingURL=tripPane.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tripPane.cjs.js","names":["UI","$rdf"],"sources":["../../src/trip/tripPane.js"],"sourcesContent":["/* Trip Pane\n **\n ** This pane deals with trips themselves and also\n ** will look at transactions organized by trip.\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: UI.icons.iconBase + 'noun_62007.svg',\n\n name: 'travel expenses',\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\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 (UI.ns.qu('Transaction') in kb.findSuperClassesNT(subject)) {\n return 'by Trip'\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 myDocument = context.dom\n const kb = context.store\n const ns = UI.ns\n const CAL = $rdf.Namespace('http://www.w3.org/2002/12/cal/ical#')\n const TRIP = $rdf.Namespace('http://www.w3.org/ns/pim/trip#')\n\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'transactionPane')\n div.innerHTML = '<h2>Trip transactions</h2>'\n\n const complain = function complain (message, style) {\n if (style === undefined) style = 'color: grey'\n const pre = myDocument.createElement('pre')\n pre.setAttribute('style', style)\n div.appendChild(pre)\n pre.appendChild(myDocument.createTextNode(message))\n }\n\n // //////////////////////////////////////////////////////////////////////////////\n //\n // Body of trip pane\n\n const t = kb.findTypeURIs(subject)\n\n // var me = authn.currentUser()\n\n // Function: Render a single trip\n\n const renderTrip = function renderTrip (subject, thisDiv) {\n const query = new $rdf.Query(UI.utils.label(subject))\n const vars = ['date', 'transaction', 'comment', 'type', 'in_USD']\n const v = {}\n vars.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n }) // Only used by UI\n query.pat.add(v.transaction, TRIP('trip'), subject)\n\n const 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 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 // query.pat.optional.push(opt);\n\n const calculations = function () {\n const total = {}\n const trans = kb.each(undefined, TRIP('trip'), subject)\n // complain(\"@@ Number of transactions in this trip: \" + trans.length);\n trans.forEach(function (t) {\n let ty = kb.the(t, ns.rdf('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 (!total[tyuri]) total[tyuri] = 0.0\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 total[tyuri] = total[tyuri] + parseFloat(lit.value)\n // complain(' Trans type ='+ty+'; in_USD \"' + lit\n // +'; total[tyuri] = '+total[tyuri]+';')\n }\n }\n })\n let str = ''\n let types = 0\n let grandTotal = 0.0\n for (const uri in total) {\n str += UI.utils.label(kb.sym(uri)) + ': ' + total[uri] + '; '\n types++\n grandTotal += total[uri]\n }\n complain('Totals of ' + trans.length + ' transactions: ' + str, '') // @@@@@ yucky -- need 2 col table\n if (types > 1) {\n complain('Overall net: ' + grandTotal, 'text-treatment: bold;')\n }\n }\n const tableDiv = UI.table(myDocument, {\n query,\n onDone: calculations\n })\n thisDiv.appendChild(tableDiv)\n }\n\n // Render the set of trips which have transactions in this class\n\n if (UI.ns.qu('Transaction') in kb.findSuperClassesNT(subject)) {\n const ts = kb.each(undefined, ns.rdf('type'), subject)\n const triples = []\n const index = []\n for (let i = 0; i < ts.length; i++) {\n const trans = ts[i]\n const trip = kb.any(trans, TRIP('trip'))\n if (!trip) {\n triples.push(trans)\n } else {\n if (!(trans in index)) index[trip] = { total: 0, transactions: [] }\n const usd = kb.any(trans, UI.ns.qu('in_USD'))\n if (usd) index[trip].total += usd\n const date = kb.any(trans, UI.ns.qu('date'))\n index[trip.toNT()].transactions.push([date, trans])\n }\n }\n /* var byDate = function(a,b) {\n return new Date(kb.any(a, CAL('dtstart'))) -\n new Date(kb.any(b, CAL('dtstart')));\n }\n */\n const list = []\n for (const h1 in index) {\n const t1 = kb.fromNT(h1)\n list.push([kb.any(t1, CAL('dtstart')), t1])\n }\n list.sort()\n for (let j = 0; j < list.length; j++) {\n const t2 = list[j][1]\n renderTrip(t2, div)\n }\n\n // Render a single trip\n } else if (t['http://www.w3.org/ns/pim/trip#Trip']) {\n renderTrip(subject, div)\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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"}
|