solid-panes 3.5.28-alpha → 3.5.29-alpha
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 +0 -2
- package/lib/RDFXMLPane.js +6 -8
- package/lib/RDFXMLPane.js.map +1 -1
- package/lib/argument/argumentPane.js +10 -11
- package/lib/argument/argumentPane.js.map +1 -1
- package/lib/attach/attachPane.js +47 -85
- package/lib/attach/attachPane.js.map +1 -1
- package/lib/audio/audioPane.js +11 -36
- package/lib/audio/audioPane.js.map +1 -1
- package/lib/classInstancePane.js +11 -20
- package/lib/classInstancePane.js.map +1 -1
- package/lib/dashboard/basicPreferences.js +3 -53
- package/lib/dashboard/basicPreferences.js.map +1 -1
- package/lib/dashboard/dashboardPane.js +2 -18
- package/lib/dashboard/dashboardPane.js.map +1 -1
- package/lib/dashboard/homepage.js +1 -19
- package/lib/dashboard/homepage.js.map +1 -1
- package/lib/dataContentPane.js +15 -58
- package/lib/dataContentPane.js.map +1 -1
- package/lib/defaultPane.js +13 -21
- package/lib/defaultPane.js.map +1 -1
- package/lib/dokieli/dokieliPane.js +19 -28
- package/lib/dokieli/dokieliPane.js.map +1 -1
- package/lib/dokieli/new.js.map +1 -1
- package/lib/form/pane.js +26 -40
- package/lib/form/pane.js.map +1 -1
- package/lib/home/homePane.js +7 -23
- package/lib/home/homePane.js.map +1 -1
- package/lib/humanReadablePane.js +14 -28
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/imagePane.js +9 -13
- package/lib/imagePane.js.map +1 -1
- package/lib/index.js +4 -18
- package/lib/index.js.map +1 -1
- package/lib/internal/internalPane.js +10 -41
- package/lib/internal/internalPane.js.map +1 -1
- package/lib/mainPage/footer.js +0 -4
- package/lib/mainPage/footer.js.map +1 -1
- package/lib/mainPage/header.js +2 -28
- package/lib/mainPage/header.js.map +1 -1
- package/lib/mainPage/index.js +1 -12
- package/lib/mainPage/index.js.map +1 -1
- package/lib/microblogPane/microblogPane.js +100 -237
- package/lib/microblogPane/microblogPane.js.map +1 -1
- package/lib/n3Pane.js +2 -7
- package/lib/n3Pane.js.map +1 -1
- package/lib/outline/context.js +0 -2
- package/lib/outline/context.js.map +1 -1
- package/lib/outline/licenseOptions.js +9 -25
- package/lib/outline/licenseOptions.js.map +1 -1
- package/lib/outline/manager.js +178 -580
- package/lib/outline/manager.js.map +1 -1
- package/lib/outline/manager.test.js +1 -11
- package/lib/outline/manager.test.js.map +1 -1
- package/lib/outline/outlineIcons.js +30 -25
- package/lib/outline/outlineIcons.js.map +1 -1
- package/lib/outline/propertyViews.js +0 -10
- package/lib/outline/propertyViews.js.map +1 -1
- package/lib/outline/propertyViews.test.js +1 -3
- package/lib/outline/propertyViews.test.js.map +1 -1
- package/lib/outline/queryByExample.js +24 -76
- package/lib/outline/queryByExample.js.map +1 -1
- package/lib/outline/userInput.js +214 -454
- package/lib/outline/userInput.js.map +1 -1
- package/lib/outline/viewAsImage.js +0 -6
- package/lib/outline/viewAsImage.js.map +1 -1
- package/lib/outline/viewAsMbox.js +3 -4
- package/lib/outline/viewAsMbox.js.map +1 -1
- package/lib/pad/padPane.js +45 -93
- package/lib/pad/padPane.js.map +1 -1
- package/lib/playlist/playlistPane.js +3 -20
- package/lib/playlist/playlistPane.js.map +1 -1
- package/lib/profile/editProfile.view.js +7 -24
- package/lib/profile/editProfile.view.js.map +1 -1
- package/lib/profile/profile.dom.js +0 -3
- package/lib/profile/profile.dom.js.map +1 -1
- package/lib/registerPanes.js +29 -27
- package/lib/registerPanes.js.map +1 -1
- package/lib/schedule/formsForSchedule.js.map +1 -1
- package/lib/schedule/schedulePane.js +62 -122
- package/lib/schedule/schedulePane.js.map +1 -1
- package/lib/sharing/sharingPane.js +2 -10
- package/lib/sharing/sharingPane.js.map +1 -1
- package/lib/slideshow/slideshowPane.js +9 -14
- package/lib/slideshow/slideshowPane.js.map +1 -1
- package/lib/socialPane.js +43 -124
- package/lib/socialPane.js.map +1 -1
- package/lib/tabbed/tabbedPane.js +1 -15
- package/lib/tabbed/tabbedPane.js.map +1 -1
- package/lib/tableViewPane.js +4 -7
- package/lib/tableViewPane.js.map +1 -1
- package/lib/test-import-export/common.js +2 -1
- package/lib/test-import-export/common.js.map +1 -1
- package/lib/test-import-export/edit-importer.js +7 -9
- package/lib/test-import-export/edit-importer.js.map +1 -1
- package/lib/transaction/pane.js +31 -90
- package/lib/transaction/pane.js.map +1 -1
- package/lib/transaction/period.js +20 -71
- package/lib/transaction/period.js.map +1 -1
- package/lib/trip/tripPane.js +30 -34
- package/lib/trip/tripPane.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.dom.js +8 -34
- package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.test.js +3 -8
- package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.utils.js +0 -10
- package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.view.js +1 -22
- package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
- package/lib/ui/pane.js +22 -28
- package/lib/ui/pane.js.map +1 -1
- package/lib/versionInfo.d.ts +2 -0
- package/lib/versionInfo.d.ts.map +1 -1
- package/lib/versionInfo.js +18 -16
- package/lib/versionInfo.js.map +1 -1
- package/lib/video/videoPane.js +2 -5
- package/lib/video/videoPane.js.map +1 -1
- package/package.json +24 -24
- package/src/versionInfo.ts +18 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","t","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","n","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","e","shiftKey","list2","sort","i","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","hasOwnProperty","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\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\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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"}
|
|
1
|
+
{"version":3,"file":"pane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","t","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","n","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","e","shiftKey","list2","sort","i","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","hasOwnProperty","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\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\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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"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
** downloaded from a bank statement, annotting it with classes and comments,
|
|
7
7
|
** trips, etc
|
|
8
8
|
*/
|
|
9
|
-
var UI = require('solid-ui');
|
|
10
9
|
|
|
10
|
+
var UI = require('solid-ui');
|
|
11
11
|
var ns = UI.ns;
|
|
12
12
|
module.exports = {
|
|
13
13
|
icon: UI.icons.iconBase + 'noun_142708.svg',
|
|
@@ -20,13 +20,13 @@ module.exports = {
|
|
|
20
20
|
if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) return 'period';
|
|
21
21
|
return null; // No under other circumstances (while testing at least!)
|
|
22
22
|
},
|
|
23
|
+
|
|
23
24
|
render: function render(subject, context) {
|
|
24
25
|
var dom = context.dom;
|
|
25
26
|
var kb = context.session.store;
|
|
26
27
|
var ns = UI.ns;
|
|
27
28
|
var div = dom.createElement('div');
|
|
28
29
|
div.setAttribute('class', 'periodPane');
|
|
29
|
-
|
|
30
30
|
var mention = function mention(message, style) {
|
|
31
31
|
if (!style) style = 'color: grey;';
|
|
32
32
|
var pre = dom.createElement('pre');
|
|
@@ -34,11 +34,9 @@ module.exports = {
|
|
|
34
34
|
div.appendChild(pre);
|
|
35
35
|
pre.appendChild(dom.createTextNode(message));
|
|
36
36
|
};
|
|
37
|
-
|
|
38
37
|
var happy = function happy(message) {
|
|
39
38
|
return mention('✓ ' + message, 'color: #010; background-color: #efe');
|
|
40
39
|
};
|
|
41
|
-
|
|
42
40
|
var complain = function complain(message) {
|
|
43
41
|
return mention(message, 'color: #100; background-color: #fee');
|
|
44
42
|
};
|
|
@@ -49,59 +47,44 @@ module.exports = {
|
|
|
49
47
|
parent.replaceChild(div2, div)
|
|
50
48
|
}
|
|
51
49
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
50
|
var renderPeriod = function renderPeriod() {
|
|
55
51
|
var dtstart = kb.any(subject, ns.cal('dtstart'));
|
|
56
|
-
|
|
57
52
|
if (dtstart === undefined) {
|
|
58
53
|
complain('(Error: There is no start date known for this period <' + subject.uri + '>,\n -- every period needs one.)');
|
|
59
54
|
}
|
|
60
|
-
|
|
61
55
|
var dtend = kb.any(subject, ns.cal('dtend'));
|
|
62
|
-
|
|
63
56
|
if (dtend === undefined) {
|
|
64
57
|
complain('(Error: There is no end date known for this period <' + subject.uri + '>,\n -- every period needs one.)');
|
|
65
|
-
}
|
|
58
|
+
}
|
|
66
59
|
|
|
60
|
+
// var store = kb.any(subject, UI.ns.qu('annotationStore')) || null
|
|
67
61
|
|
|
68
62
|
var predicateURIsDone = {};
|
|
69
|
-
|
|
70
63
|
var donePredicate = function donePredicate(pred) {
|
|
71
64
|
predicateURIsDone[pred.uri] = true;
|
|
72
65
|
};
|
|
73
|
-
|
|
74
66
|
donePredicate(ns.rdf('type'));
|
|
75
|
-
|
|
76
67
|
var inPeriod = function inPeriod(date) {
|
|
77
68
|
return !!(date && date >= dtstart && date < dtend);
|
|
78
69
|
};
|
|
79
|
-
|
|
80
70
|
var d2 = function d2(n) {
|
|
81
71
|
var s = '' + n;
|
|
82
|
-
|
|
83
72
|
if (s.indexOf('.') >= 0) {
|
|
84
73
|
return s.split('.')[0] + '.' + (s.split('.')[1] + '00').slice(0, 2);
|
|
85
74
|
}
|
|
86
|
-
|
|
87
75
|
return s + '.00';
|
|
88
76
|
};
|
|
89
|
-
|
|
90
77
|
var transactionInPeriod = function transactionInPeriod(x) {
|
|
91
78
|
return inPeriod(kb.any(x, ns.qu('date')));
|
|
92
79
|
};
|
|
93
|
-
|
|
94
80
|
var oderByDate = function oderByDate(x, y) {
|
|
95
81
|
var dx = kb.any(x, ns.qu('date'));
|
|
96
82
|
var dy = kb.any(y, ns.qu('date'));
|
|
97
|
-
|
|
98
83
|
if (dx !== undefined && dy !== undefined) {
|
|
99
84
|
if (dx.value < dy.value) return -1;
|
|
100
85
|
if (dx.value > dy.value) return 1;
|
|
101
86
|
}
|
|
102
|
-
|
|
103
87
|
if (x.uri < y.uri) return -1; // Arbitrary but repeatable
|
|
104
|
-
|
|
105
88
|
if (x.uri > y.uri) return 1;
|
|
106
89
|
return 0;
|
|
107
90
|
};
|
|
@@ -118,21 +101,16 @@ module.exports = {
|
|
|
118
101
|
}
|
|
119
102
|
// setPaneStyle();
|
|
120
103
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
104
|
var h2 = div.appendChild(dom.createElement('h2'));
|
|
124
105
|
h2.textContent = 'Period ' + dtstart.value.slice(0, 10) + ' - ' + dtend.value.slice(0, 10);
|
|
125
|
-
|
|
126
106
|
var insertedPane = function insertedPane(context, subject, paneName) {
|
|
127
107
|
var p = context.session.paneRegistry.byName(paneName);
|
|
128
108
|
var d = p.render(subject, context);
|
|
129
109
|
d.setAttribute('style', 'border: 0.1em solid green;');
|
|
130
110
|
return d;
|
|
131
111
|
};
|
|
132
|
-
|
|
133
112
|
var expandAfterRow = function expandAfterRow(dom, row, subject, paneName, solo) {
|
|
134
113
|
var siblings = row.parentNode.children;
|
|
135
|
-
|
|
136
114
|
if (solo) {
|
|
137
115
|
for (var j = siblings.length - 1; j >= 0; j--) {
|
|
138
116
|
if (siblings[j].expanded) {
|
|
@@ -141,23 +119,19 @@ module.exports = {
|
|
|
141
119
|
}
|
|
142
120
|
}
|
|
143
121
|
}
|
|
144
|
-
|
|
145
122
|
var tr = dom.createElement('tr');
|
|
146
123
|
var td = tr.appendChild(dom.createElement('td'));
|
|
147
124
|
td.setAttribute('style', 'width: 98%; padding: 1em; border: 0.1em solid grey;');
|
|
148
125
|
var cols = row.children.length;
|
|
149
|
-
|
|
150
126
|
if (row.nextSibling) {
|
|
151
127
|
row.parentNode.insertBefore(tr, row.nextSibling);
|
|
152
128
|
} else {
|
|
153
129
|
row.parentNode.appendChild(tr);
|
|
154
130
|
}
|
|
155
|
-
|
|
156
131
|
row.expanded = tr;
|
|
157
132
|
td.setAttribute('colspan', '' + cols);
|
|
158
133
|
td.appendChild(insertedPane(context, subject, paneName));
|
|
159
134
|
};
|
|
160
|
-
|
|
161
135
|
var expandAfterRowOrCollapse = function expandAfterRowOrCollapse(dom, row, subject, paneName, solo) {
|
|
162
136
|
if (row.expanded) {
|
|
163
137
|
row.parentNode.removeChild(row.expanded);
|
|
@@ -166,29 +140,22 @@ module.exports = {
|
|
|
166
140
|
expandAfterRow(dom, row, subject, paneName, solo);
|
|
167
141
|
}
|
|
168
142
|
};
|
|
169
|
-
|
|
170
143
|
var transactionTable = function transactionTable(dom, list) {
|
|
171
144
|
var table = dom.createElement('table');
|
|
172
145
|
table.setAttribute('style', 'margin-left: 100; font-size: 9pt; width: 85%;');
|
|
173
|
-
|
|
174
146
|
var transactionRow = function transactionRow(dom, x) {
|
|
175
147
|
var tr = dom.createElement('tr');
|
|
176
|
-
|
|
177
148
|
var setTRStyle = function setTRStyle(tr, account) {
|
|
178
149
|
// var mystyle = "padding: 0.5em 1.5em 1em 1.5em; ";
|
|
179
150
|
var mystyle = 'margin-left: 8em; padding-left: 5em;';
|
|
180
|
-
|
|
181
151
|
if (account) {
|
|
182
152
|
var backgroundColor = kb.any(account, UI.ns.ui('backgroundColor'));
|
|
183
|
-
|
|
184
153
|
if (backgroundColor) {
|
|
185
154
|
mystyle += 'background-color: ' + backgroundColor.value + '; ';
|
|
186
155
|
}
|
|
187
156
|
}
|
|
188
|
-
|
|
189
157
|
tr.setAttribute('style', mystyle);
|
|
190
158
|
};
|
|
191
|
-
|
|
192
159
|
var account = kb.any(x, ns.qu('toAccount'));
|
|
193
160
|
setTRStyle(tr, account);
|
|
194
161
|
var c0 = tr.appendChild(dom.createElement('td'));
|
|
@@ -206,24 +173,21 @@ module.exports = {
|
|
|
206
173
|
var amount = kb.any(x, ns.qu('in_USD'));
|
|
207
174
|
c3.textContent = amount ? d2(amount.value) : '???';
|
|
208
175
|
c3.setAttribute('style', 'width: 6em; text-align: right; '); // @@ decimal alignment?
|
|
209
|
-
|
|
210
176
|
tr.addEventListener('click', function (e) {
|
|
211
177
|
// solo unless shift key
|
|
212
178
|
expandAfterRowOrCollapse(dom, tr, x, 'transaction', !e.shiftKey);
|
|
213
179
|
}, false);
|
|
214
180
|
return tr;
|
|
215
181
|
};
|
|
216
|
-
|
|
217
182
|
var list2 = list.filter(transactionInPeriod);
|
|
218
183
|
list2.sort(oderByDate);
|
|
219
|
-
|
|
220
184
|
for (var i = 0; i < list2.length; i++) {
|
|
221
185
|
table.appendChild(transactionRow(dom, list2[i]));
|
|
222
186
|
}
|
|
223
|
-
|
|
224
187
|
return table;
|
|
225
|
-
};
|
|
188
|
+
};
|
|
226
189
|
|
|
190
|
+
// List unclassified transactions
|
|
227
191
|
|
|
228
192
|
var dummies = {
|
|
229
193
|
'http://www.w3.org/2000/10/swap/pim/qif#Transaction': true,
|
|
@@ -237,7 +201,6 @@ module.exports = {
|
|
|
237
201
|
var unclassifiedIn = [];
|
|
238
202
|
var unclassifiedOut = [];
|
|
239
203
|
var usd, z;
|
|
240
|
-
|
|
241
204
|
for (var y in xURIs) {
|
|
242
205
|
// For each thing which can be inferred to be a transaction
|
|
243
206
|
// @@ TODO: Write away the need for exception on next line
|
|
@@ -245,24 +208,18 @@ module.exports = {
|
|
|
245
208
|
if (xURIs.hasOwnProperty(y)) {
|
|
246
209
|
z = kb.sym(y);
|
|
247
210
|
var tt = kb.each(z, ns.rdf('type')); // What EXPLICIT definitions
|
|
248
|
-
|
|
249
211
|
var classified = false;
|
|
250
|
-
|
|
251
212
|
for (var j = 0; j < tt.length; j++) {
|
|
252
213
|
var _t = tt[j];
|
|
253
|
-
|
|
254
214
|
if (dummies[_t.uri] === undefined) {
|
|
255
215
|
classified = true;
|
|
256
216
|
}
|
|
257
217
|
}
|
|
258
|
-
|
|
259
218
|
if (!classified) {
|
|
260
219
|
usd = kb.any(z, ns.qu('in_USD'));
|
|
261
|
-
|
|
262
220
|
if (usd === undefined) {
|
|
263
221
|
usd = kb.any(z, ns.qu('amount'));
|
|
264
222
|
}
|
|
265
|
-
|
|
266
223
|
if (usd && ('' + usd.value).indexOf('-') >= 0) {
|
|
267
224
|
unclassifiedOut.push(kb.sym(y));
|
|
268
225
|
} else {
|
|
@@ -271,9 +228,7 @@ module.exports = {
|
|
|
271
228
|
}
|
|
272
229
|
}
|
|
273
230
|
}
|
|
274
|
-
|
|
275
231
|
var tab, count;
|
|
276
|
-
|
|
277
232
|
if (unclassifiedIn.length) {
|
|
278
233
|
tab = transactionTable(dom, unclassifiedIn);
|
|
279
234
|
count = tab.children.length;
|
|
@@ -282,7 +237,6 @@ module.exports = {
|
|
|
282
237
|
} else {
|
|
283
238
|
happy('No unclassified income');
|
|
284
239
|
}
|
|
285
|
-
|
|
286
240
|
if (unclassifiedOut.length) {
|
|
287
241
|
tab = transactionTable(dom, unclassifiedOut);
|
|
288
242
|
count = tab.children.length;
|
|
@@ -290,12 +244,12 @@ module.exports = {
|
|
|
290
244
|
div.appendChild(tab);
|
|
291
245
|
} else {
|
|
292
246
|
happy('No unclassified outgoings ');
|
|
293
|
-
}
|
|
247
|
+
}
|
|
294
248
|
|
|
249
|
+
// /////////////// Check some categories of transaction for having given fields
|
|
295
250
|
|
|
296
251
|
var catSymbol = function catSymbol(catTail) {
|
|
297
252
|
var cats = kb.findSubClassesNT(ns.qu('Transaction'));
|
|
298
|
-
|
|
299
253
|
for (var cat in cats) {
|
|
300
254
|
// @@ TODO: Write away the need for exception on next line
|
|
301
255
|
// eslint-disable-next-line no-prototype-builtins
|
|
@@ -305,68 +259,63 @@ module.exports = {
|
|
|
305
259
|
}
|
|
306
260
|
}
|
|
307
261
|
}
|
|
308
|
-
|
|
309
262
|
return null;
|
|
310
263
|
};
|
|
311
|
-
|
|
312
264
|
var checkCatHasField = function checkCatHasField(catTail, pred) {
|
|
313
265
|
var cat = catSymbol(catTail);
|
|
314
266
|
var tab;
|
|
315
267
|
var guilty = [];
|
|
316
268
|
var count = 0;
|
|
317
|
-
|
|
318
269
|
if (!cat) {
|
|
319
270
|
complain('Error: No category correspnding to ' + catTail);
|
|
320
271
|
return null;
|
|
321
272
|
}
|
|
322
|
-
|
|
323
273
|
var list = kb.each(undefined, ns.rdf('type'), cat);
|
|
324
|
-
|
|
325
274
|
for (var i = 0; i < list.length; i++) {
|
|
326
275
|
if (!kb.any(list[i], pred)) {
|
|
327
276
|
guilty.push(list[i]);
|
|
328
277
|
}
|
|
329
278
|
}
|
|
330
|
-
|
|
331
279
|
if (guilty.length) {
|
|
332
280
|
tab = transactionTable(dom, guilty);
|
|
333
281
|
count = tab.children.length;
|
|
334
282
|
div.appendChild(dom.createElement('h3')).textContent = UI.utils.label(cat) + ' with no ' + UI.utils.label(pred) + (count < 4 ? '' : ' (' + count + ')');
|
|
335
283
|
div.appendChild(tab);
|
|
336
284
|
}
|
|
337
|
-
|
|
338
285
|
return count;
|
|
339
|
-
};
|
|
340
|
-
|
|
286
|
+
};
|
|
341
287
|
|
|
288
|
+
// Load dynamically as properties of period
|
|
342
289
|
if (checkCatHasField('Reimbursables', ns.trip('trip')) === 0) {
|
|
343
290
|
happy('Reimbursables all have trips');
|
|
344
291
|
}
|
|
345
|
-
|
|
346
292
|
if (checkCatHasField('Other_Inc_Speaking', ns.trip('trip')) === 0) {
|
|
347
293
|
happy('Speaking income all has trips');
|
|
348
|
-
}
|
|
349
|
-
|
|
294
|
+
}
|
|
295
|
+
// end of render period instance
|
|
350
296
|
}; // renderPeriod
|
|
297
|
+
|
|
351
298
|
// //////////////////////////////////////////////////////////////////////////////
|
|
299
|
+
|
|
352
300
|
// var me = authn.currentUser()
|
|
301
|
+
|
|
353
302
|
// Render a single Period
|
|
303
|
+
|
|
354
304
|
// This works only if enough metadata about the properties can drive the RDFS
|
|
355
305
|
// (or actual type statements whichtypically are NOT there on)
|
|
356
|
-
|
|
357
|
-
|
|
358
306
|
var t = kb.findTypeURIs(subject);
|
|
359
|
-
|
|
360
307
|
if (t['http://www.w3.org/2000/10/swap/pim/qif#Period']) {
|
|
361
308
|
var needed = kb.each(subject, ns.rdfs('seeAlso'));
|
|
362
309
|
console.log('Loading before render: ' + needed.length);
|
|
363
310
|
kb.fetcher.load(needed).then(function () {
|
|
364
311
|
renderPeriod();
|
|
365
312
|
});
|
|
366
|
-
}
|
|
313
|
+
}
|
|
367
314
|
|
|
315
|
+
// if (!me) complain("You do not have your Web Id set. Set your Web ID to make changes.");
|
|
368
316
|
|
|
369
317
|
return div;
|
|
370
318
|
}
|
|
371
|
-
};
|
|
319
|
+
};
|
|
320
|
+
// ends
|
|
372
321
|
//# sourceMappingURL=period.js.map
|