notes
This commit is contained in:
parent
ec07ab8ce3
commit
6cb50806c0
478
NOTES
478
NOTES
@ -15,6 +15,17 @@ little old Scottish ladies cried out to me 'LIVE DANGEROUSLY, SON! LIVE
|
|||||||
DANGEROUSLY'" --kowey
|
DANGEROUSLY'" --kowey
|
||||||
|
|
||||||
|
|
||||||
|
* principles
|
||||||
|
*** we aim to make reliable, maintainable, usable, useful software, sustainably.
|
||||||
|
*** docs before packaging before tests before fixes before refactoring before features
|
||||||
|
*** "bugs" are errors, as in the programmers messed up
|
||||||
|
*** automate
|
||||||
|
*** measure
|
||||||
|
*** test continuously, test everything
|
||||||
|
*** less is more
|
||||||
|
*** code review/pair programming
|
||||||
|
|
||||||
|
|
||||||
* todo/backlog
|
* todo/backlog
|
||||||
** documentation, marketing
|
** documentation, marketing
|
||||||
*** developer notes & log
|
*** developer notes & log
|
||||||
@ -338,26 +349,19 @@ competitors/fellow niche inhabitants
|
|||||||
**** home edition
|
**** home edition
|
||||||
**** real-time project ledger
|
**** real-time project ledger
|
||||||
** packaging, installability
|
** packaging, installability
|
||||||
*** easier installation
|
*** linux
|
||||||
**** all platforms
|
***** debian/ubuntu packaging
|
||||||
***** binary build/publish process
|
*** mac
|
||||||
***** reduce dependencies
|
|
||||||
***** split packages ?
|
|
||||||
**** linux
|
|
||||||
***** keep up with debian/ubuntu haskell packagers
|
|
||||||
**** mac
|
|
||||||
***** easy data entry, then
|
|
||||||
***** easy installer
|
***** easy installer
|
||||||
***** easy startup
|
***** easy startup
|
||||||
**** windows
|
*** windows
|
||||||
***** easy data entry, then
|
|
||||||
***** easy installer
|
***** easy installer
|
||||||
***** easy startup
|
***** easy startup
|
||||||
** testing
|
** testing
|
||||||
*** documentation
|
*** documentation
|
||||||
**** site up, current
|
**** site up, current ?
|
||||||
**** demo up, current
|
**** demo up, current ?
|
||||||
**** haddock building, current
|
**** haddock building, current ?
|
||||||
**** doctests ?
|
**** doctests ?
|
||||||
*** unit
|
*** unit
|
||||||
**** hunit
|
**** hunit
|
||||||
@ -368,8 +372,6 @@ competitors/fellow niche inhabitants
|
|||||||
***** test all ledger file format features
|
***** test all ledger file format features
|
||||||
***** clarify hledgerisms in file format - that hledger can read but ledger can't
|
***** clarify hledgerisms in file format - that hledger can read but ledger can't
|
||||||
**** ledger 3 baseline tests
|
**** ledger 3 baseline tests
|
||||||
**** auto-compare xml output with ledger's ?
|
|
||||||
**** allow multiple tests in .test ?
|
|
||||||
*** performance
|
*** performance
|
||||||
**** speed, benchmark tests
|
**** speed, benchmark tests
|
||||||
**** memory usage
|
**** memory usage
|
||||||
@ -392,81 +394,95 @@ competitors/fellow niche inhabitants
|
|||||||
**** usability
|
**** usability
|
||||||
**** download & usage stats
|
**** download & usage stats
|
||||||
** errors
|
** errors
|
||||||
*** docs: manual needs a table of contents
|
*** unicode tests fail on linux - retest
|
||||||
*** windows: fix browser starting (starts firefox but says could not start)
|
*** web: doesn't support multiple filter patterns
|
||||||
*** non-blockers/retest
|
*** web: accounts final balance can be -0, colored red
|
||||||
**** docs: need to be less wall-of-text
|
*** web: post handlers should preserve a p
|
||||||
**** docs:installing:list three install options
|
*** web: --base-url trailing slash gives redirect loop
|
||||||
**** balance: --depth with --flat should show aggregate balances
|
hledger web --port 5001 --base-url http://localhost:5001/ -f ~/personal/household.journal
|
||||||
**** register: --depth should show aggregate postings
|
*** web: assets.bank.checking indentation in demo journal
|
||||||
**** parsing: only journals can include, and only another journal
|
*** web: loses -B after an edit, and/or a filesystem edit
|
||||||
**** convert: rules file can't have blank lines after last data
|
*** balance: --depth with --flat should show aggregate balances
|
||||||
|
*** register: intervals with unspecified from should start from first txn not first matched txn ?
|
||||||
|
*** convert: rules file can't have blank lines after last data
|
||||||
|
|
||||||
**** parsing: misleading error when final newline missing
|
*** problem with ~ in path ?
|
||||||
|
CICMD=web --debug # -f data/sample.journal
|
||||||
|
No journal file "~/personal/current.journal", creating it.
|
||||||
|
Edit this file or use "hledger add" or "hledger web" to add transactions.
|
||||||
|
hledger: ~/personal/current.journal: openFile: does not exist (No such file or directory)
|
||||||
|
*** parsing: period expressions should allow interval at the end
|
||||||
|
*** parsing: double error output
|
||||||
|
could not parse journal data in (stdin)
|
||||||
|
"(stdin)" (line 7, column 1):
|
||||||
|
unexpected end of input
|
||||||
|
could not balance this transaction (real postings are off by $0.01)
|
||||||
|
2010/08/01 (2420) simon monthly contribution
|
||||||
|
eleonore $40.50
|
||||||
|
simon $-100.00 ; car payment contribution for aug
|
||||||
|
simon $38.46 ; 50-50 car adjustment for jul
|
||||||
|
simon $49.13 ; 50-50 food adjustment for jul
|
||||||
|
simon $-28.08 ; 50-50 home adjustment for jul
|
||||||
|
|
||||||
|
|
||||||
|
hledger: could not parse journal data in (stdin)
|
||||||
|
"(stdin)" (line 7, column 1):
|
||||||
|
unexpected end of input
|
||||||
|
could not balance this transaction (real postings are off by $0.01)
|
||||||
|
2010/08/01 (2420) simon monthly contribution
|
||||||
|
eleonore $40.50
|
||||||
|
simon $-100.00 ; car payment contribution for aug
|
||||||
|
simon $38.46 ; 50-50 car adjustment for jul
|
||||||
|
simon $49.13 ; 50-50 food adjustment for jul
|
||||||
|
simon $-28.08 ; 50-50 home adjustment for jul
|
||||||
|
|
||||||
|
*** parsing: canonicalise account name case
|
||||||
|
*** parsing: only journals can include, and only another journal
|
||||||
|
*** parsing: misleading error when journal lacks a final newline
|
||||||
hledger -f- balance
|
hledger -f- balance
|
||||||
<<<
|
<<<
|
||||||
2010/1/1
|
2010/1/2
|
||||||
a 1
|
a 1
|
||||||
b
|
b
|
||||||
>>>
|
*** parsing: better leap year checking
|
||||||
>>>2
|
|
||||||
"-" (line 1, column 9):
|
|
||||||
unexpected "\r"
|
|
||||||
expecting digit, effective date, cleared flag, transaction code or description and/or comment
|
|
||||||
>>>= 1
|
|
||||||
|
|
||||||
**** parsing: wrong line number in error
|
|
||||||
hledger -f- print
|
|
||||||
<<<
|
|
||||||
2010-03-18 Postage
|
|
||||||
Foo 11.04 GBP @@ 12.46 EUR ; @ 1.129 EUR
|
|
||||||
Bar
|
|
||||||
>>>
|
|
||||||
hledger: parse error at (line 1, column 24):
|
|
||||||
unexpected "@"
|
|
||||||
expecting comment or new-line
|
|
||||||
|
|
||||||
**** parsing: errors should include the file name
|
|
||||||
This one does:
|
|
||||||
$ hledger -b today
|
|
||||||
"/Users/simon/personal/current.journal" (line 4, column 1) in included file "2010.journal":
|
|
||||||
"2010.journal" (line 1013, column 1):
|
|
||||||
unexpected "\n"
|
|
||||||
could not balance this transaction (real postings are off by $-3156.72)
|
|
||||||
|
|
||||||
This one doesn't:
|
|
||||||
$ hledger -f 2008.journal stat
|
|
||||||
hledger: parse error at (line 1, column 59):
|
|
||||||
unexpected "["
|
|
||||||
expecting comment or new-line
|
|
||||||
|
|
||||||
**** parsing: better leap year checking
|
|
||||||
ledger:
|
ledger:
|
||||||
While parsing file "/Users/simon/personal/2010.ledger", line 442:
|
While parsing file "/Users/simon/personal/2010.ledger", line 442:
|
||||||
While parsing transaction:
|
While parsing transaction:
|
||||||
> 2/27=2/29 (20100201ucla) ucla payment
|
> 2/27=2/29 (20100201ucla) ucla payment
|
||||||
Error: Day of month is not valid for year
|
Error: Day of month is not valid for year
|
||||||
|
|
||||||
**** print: virtual parentheses/brackets throw off alignment
|
*** docs: need to be less wall-of-text
|
||||||
<<<
|
*** docs:installing:describe three install options in one place
|
||||||
2009/01/27 (1/2009) Foobar 2
|
*** LEDGER vs LEDGER_FILE
|
||||||
VLL:VLL_1_Year -7140.00 USD ; Some comment
|
*** data safety issues
|
||||||
(Company:Baz) -7140.00 USD
|
**** clarify read-only story
|
||||||
FLL:Foreign 6000.0 USD
|
***** auto-create of empty files annoying ?
|
||||||
VLL_VAT 1140.0 USD
|
***** data-modifying commands: add, web->add/edit
|
||||||
>>>
|
*** compile warnings on linux
|
||||||
2009/03/27 (000007) Foobar 1
|
simon@joyful:/repos/hledger$ ghc --make hledger.hs -o bin/`runhaskell ./hledger.hs --binary-filename` -L/usr/lib -DMAKE -DPATCHLEVEL=0 -DCHART -DVTY -DWEB -W -fwarn-tabs -ihledger-lib -O2 -static -optl-static -optl-pthread
|
||||||
FLL 6783.00 USD
|
|
||||||
(Company:Baz) 6783.00 USD
|
|
||||||
VAT -5700.00 USD
|
|
||||||
VLL_VAT -1083.00 USD
|
|
||||||
|
|
||||||
|
hledger.hs:1:0:
|
||||||
|
The main function `main' is not exported by module `Main'
|
||||||
|
[16 of 35] Compiling Hledger.Cli.Version ( Hledger/Cli/Version.hs, Hledger/Cli/Version.o )
|
||||||
|
[19 of 35] Compiling Hledger.Read ( Hledger/Read.hs, Hledger/Read.o )
|
||||||
|
[20 of 35] Compiling Hledger.Cli.Options ( Hledger/Cli/Options.hs, Hledger/Cli/Options.o )
|
||||||
|
[21 of 35] Compiling Hledger.Cli.Commands.Balance ( Hledger/Cli/Commands/Balance.hs, Hledger/Cli/Commands/Balance.o )
|
||||||
|
[22 of 35] Compiling Hledger.Cli.Commands.Convert ( Hledger/Cli/Commands/Convert.hs, Hledger/Cli/Commands/Convert.o )
|
||||||
|
[23 of 35] Compiling Hledger.Cli.Commands.Chart ( Hledger/Cli/Commands/Chart.hs, Hledger/Cli/Commands/Chart.o )
|
||||||
|
|
||||||
|
Hledger/Cli/Commands/Chart.hs:16:0:
|
||||||
|
Warning: The import of `Control.Monad' is redundant
|
||||||
|
except perhaps to import instances from `Control.Monad'
|
||||||
|
To import instances alone, use: import Control.Monad()
|
||||||
|
|
||||||
|
Hledger/Cli/Commands/Chart.hs:23:0:
|
||||||
|
Warning: The import of `Data.List' is redundant
|
||||||
|
except perhaps to import instances from `Data.List'
|
||||||
|
To import instances alone, use: import Data.List()
|
||||||
** refactoring, cleanup
|
** refactoring, cleanup
|
||||||
*** more modularity
|
*** more modularity
|
||||||
**** packages/namespace
|
**** packages/namespace
|
||||||
***** make cli reusable
|
***** more package splits ?
|
||||||
****** balance sheet add-on script
|
|
||||||
***** more package splits
|
|
||||||
****** hledger-web
|
****** hledger-web
|
||||||
****** hledger-vty
|
****** hledger-vty
|
||||||
**** plugin strategy
|
**** plugin strategy
|
||||||
@ -487,10 +503,6 @@ Error: Day of month is not valid for year
|
|||||||
*** inspiration
|
*** inspiration
|
||||||
http://community.haskell.org/~ndm/downloads/paper-hoogle_overview-19_nov_2008.pdf -> Design Guidelines
|
http://community.haskell.org/~ndm/downloads/paper-hoogle_overview-19_nov_2008.pdf -> Design Guidelines
|
||||||
** features
|
** features
|
||||||
*** register: depth could aggregate deeper txns, or only with reporting interval
|
|
||||||
when you do register --depth 1 and all transactions use depth-2 accounts, should it display synthetic aggregated depth-1 transactions ?
|
|
||||||
I have been wanting that, at least in the case when you have a reporting interval like -p daily
|
|
||||||
|
|
||||||
*** register --wide and/or --format ...
|
*** register --wide and/or --format ...
|
||||||
*** --related
|
*** --related
|
||||||
*** Double -> Decimal
|
*** Double -> Decimal
|
||||||
@ -508,68 +520,22 @@ improve reliability
|
|||||||
*** upload feature
|
*** upload feature
|
||||||
*** payee & account anonymisation
|
*** payee & account anonymisation
|
||||||
*** easier timelog formats
|
*** easier timelog formats
|
||||||
*** implicit timelog account
|
|
||||||
*** add: completion etc.
|
*** add: completion etc.
|
||||||
*** convert: generalise/reuse add's history awareness
|
*** convert: generalise/reuse add's history awareness
|
||||||
*** web: charts (Chart or google)
|
*** web: charts (Chart or google)
|
||||||
*** wide/customisable/consistent layout
|
*** wide/customisable/consistent layout
|
||||||
*** --flat balance report format
|
|
||||||
#not:
|
|
||||||
#hledger bal clearview
|
|
||||||
# 43.4h TIME:work:jobs:clearview
|
|
||||||
# 1.7h bad retention collection
|
|
||||||
# 0.1h cash receipts sales co heading
|
|
||||||
# 0.4h commissions dashboard breakage
|
|
||||||
# 4.1h commissions:total detail starting balance
|
|
||||||
# 0.5h cvmanage issues
|
|
||||||
# 1.3h dashboard error
|
|
||||||
# 0.5h update error logging system
|
|
||||||
# 1.0h filter views by sales co:commissions
|
|
||||||
# 1.0h html2ps error
|
|
||||||
# 6.1h payments have wrong sales co
|
|
||||||
# 0.4h site hang
|
|
||||||
# 0.2h sysadmin
|
|
||||||
# 26.6h title 24
|
|
||||||
#--------------------
|
|
||||||
# 43.5h
|
|
||||||
#but:
|
|
||||||
#hledger bal clearview --flat --depth 5
|
|
||||||
# 1.7h bad retention collection
|
|
||||||
# 0.1h cash receipts sales co heading
|
|
||||||
# 0.4h commissions dashboard breakage
|
|
||||||
# 4.1h commissions:total detail starting balance
|
|
||||||
# 0.5h cvmanage issues
|
|
||||||
# 1.3h dashboard error
|
|
||||||
# 1.0h filter views by sales co:commissions
|
|
||||||
# 1.0h html2ps error
|
|
||||||
# 6.1h payments have wrong sales co
|
|
||||||
# 0.4h site hang
|
|
||||||
# 0.2h sysadmin
|
|
||||||
# 26.6h title 24
|
|
||||||
#--------------------
|
|
||||||
# 43.4h
|
|
||||||
#
|
|
||||||
#- only depth 5 accounts are shown
|
|
||||||
#- extra amount in parent account, if any, is added as misc
|
|
||||||
#- visible numbers add up to the visible total
|
|
||||||
*** effective/actual dates for postings
|
*** effective/actual dates for postings
|
||||||
*** better web ui/gui
|
*** better web ui/gui
|
||||||
*** nice reports with charts
|
*** nice reports with charts
|
||||||
*** ledger-compatible xml output ?
|
|
||||||
*** allow no command or unordered command with pattern args
|
|
||||||
*** more automated bank data conversion
|
*** more automated bank data conversion
|
||||||
*** ofx download
|
*** parse more file formats - gnucash, qif, ofx, csv..
|
||||||
|
*** download via ofx protocol
|
||||||
*** watching a changing ledger
|
*** watching a changing ledger
|
||||||
*** more date syntax ? last nov, next friday, optional this, week of
|
*** more date syntax ? last nov, next friday, optional this, week of
|
||||||
*** more period syntax ? every N days, biweekly
|
*** more period syntax ? every N days, biweekly
|
||||||
*** accept multiple -f files
|
*** accept multiple -f files
|
||||||
*** more reliable tidy layout from print
|
*** more reliable tidy layout from print
|
||||||
*** parse more file formats - gnucash, qif, ofx, csv..
|
|
||||||
*** i18n
|
*** i18n
|
||||||
import Codec.Binary.UTF8.String (encodeString, decodeString)
|
|
||||||
import Data.ByteString.UTF8 (fromString, toString)
|
|
||||||
import Data.ByteString.Char8 (pack, unpack)
|
|
||||||
import Data.Text.Encoding (decodeUtf8)
|
|
||||||
*** speed, memory usage
|
*** speed, memory usage
|
||||||
*** clear, documented interfaces/surfaces
|
*** clear, documented interfaces/surfaces
|
||||||
*** plugin architecture/modular packaging
|
*** plugin architecture/modular packaging
|
||||||
@ -609,15 +575,6 @@ plugins can be discovered/loaded by module path or by loading files directly
|
|||||||
|
|
||||||
|
|
||||||
* misc
|
* misc
|
||||||
** principles
|
|
||||||
*** we aim to make reliable, maintainable, usable, useful software, sustainably.
|
|
||||||
*** "bugs" are errors, as in the programmers messed up
|
|
||||||
*** docs before packaging before tests before fixes before refactoring before features
|
|
||||||
*** automate
|
|
||||||
*** measure
|
|
||||||
*** test continuously, test everything
|
|
||||||
*** less is more
|
|
||||||
*** code review/pair programming
|
|
||||||
** things I want to know
|
** things I want to know
|
||||||
*** time
|
*** time
|
||||||
where have I been spending my time in recent weeks ?
|
where have I been spending my time in recent weeks ?
|
||||||
@ -780,29 +737,9 @@ Or to see how your expenses will add up:
|
|||||||
*** http://www.xtuple.com/postbooks
|
*** http://www.xtuple.com/postbooks
|
||||||
*** http://weberp.org
|
*** http://weberp.org
|
||||||
**** http://www.weberp.org/weberp/doc/Manual/ManualContents.php
|
**** http://www.weberp.org/weberp/doc/Manual/ManualContents.php
|
||||||
** code snippets
|
** selinger article on currency & capital gains accounting
|
||||||
-- trace a MixedAmount
|
|
||||||
matrace :: MixedAmount -> MixedAmount
|
|
||||||
matrace a@(Mixed as) = trace (show as) a
|
|
||||||
|
|
||||||
-- normalise and trace a MixedAmount
|
|
||||||
nmatrace :: MixedAmount -> MixedAmount
|
|
||||||
nmatrace a = trace (show as) a where (Mixed as) = normaliseMixedAmount a
|
|
||||||
|
|
||||||
-- cabal test
|
|
||||||
import System.FilePath
|
|
||||||
main = defaultMainWithHooks $ simpleUserHooks { runTests = runTests' }
|
|
||||||
runTests' :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()
|
|
||||||
runTests' _ _ _ lbi = system testprog >> return ()
|
|
||||||
where testprog = (buildDir lbi) </> "hledger" </> "hledger test"
|
|
||||||
|
|
||||||
** issues with pandoc's rst support
|
|
||||||
*** treats HOME's h2s as h1
|
|
||||||
*** quotes only first line of a :: literal block
|
|
||||||
*** doesn't support http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#indirect-hyperlink-targets
|
|
||||||
** must-read article on currency & capital gains accounting
|
|
||||||
http://www.mscs.dal.ca/~selinger/accounting/tutorial.html#1.2
|
http://www.mscs.dal.ca/~selinger/accounting/tutorial.html#1.2
|
||||||
** feedback
|
** hledger feedback
|
||||||
*** fabrice niessen
|
*** fabrice niessen
|
||||||
+For me, what would be very useful for a 1.0 version would be:
|
+For me, what would be very useful for a 1.0 version would be:
|
||||||
+
|
+
|
||||||
@ -825,6 +762,213 @@ http://www.mscs.dal.ca/~selinger/accounting/tutorial.html#1.2
|
|||||||
+ soon.
|
+ soon.
|
||||||
+
|
+
|
||||||
|
|
||||||
|
** hamlet feedback
|
||||||
|
*** thread data through nested templates with Reader monad
|
||||||
|
*** HDString constructor for HamletData ?
|
||||||
|
*** data type for non-RT Hamlet as well, or better, the same type for both
|
||||||
|
*** allow (RT or non-RT) templates in $ $ as well, drop ^ ^
|
||||||
|
*** allow literal arguments in references
|
||||||
|
*** easier verbatim content quoting, eg lines starting with \\. Having to escape $$ is not so convenient for jquery
|
||||||
|
*** docs and compiler errors should say something clearer than "Hamlet url" (Hamlet routetype, urltype, routet, urlt ?)
|
||||||
|
|
||||||
|
|
||||||
|
*** 2010/8
|
||||||
|
**** $ $ could handle templates as well; drop ^ ^
|
||||||
|
**** @ @ could recognise tuples automatically; drop ?
|
||||||
|
**** why !: : for conditional attributes ? How about !? ?
|
||||||
|
|
||||||
|
** code snippets
|
||||||
|
|
||||||
|
Name: test
|
||||||
|
Version: 0.1
|
||||||
|
Synopsis: test package for linking against internal libraries
|
||||||
|
Author: Stefan Wehr
|
||||||
|
Build-type: Simple
|
||||||
|
Cabal-version: >=1.8 -- IMPORTANT
|
||||||
|
|
||||||
|
Library
|
||||||
|
Hs-source-dirs: lib -- IMPORTANT
|
||||||
|
Exposed-modules: A
|
||||||
|
Build-Depends: base >= 4
|
||||||
|
|
||||||
|
Executable test-exe
|
||||||
|
Build-depends: base >= 4, test, -- link against the internal library
|
||||||
|
Main-is: Main.hs -- imports A
|
||||||
|
Hs-source-dirs: prog -- IMPORTANT
|
||||||
|
|
||||||
|
|
||||||
|
-- trace a MixedAmount
|
||||||
|
matrace :: MixedAmount -> MixedAmount
|
||||||
|
matrace a@(Mixed as) = trace (show as) a
|
||||||
|
|
||||||
|
-- normalise and trace a MixedAmount
|
||||||
|
nmatrace :: MixedAmount -> MixedAmount
|
||||||
|
nmatrace a = trace (show as) a where (Mixed as) = normaliseMixedAmount a
|
||||||
|
|
||||||
|
-- cabal test
|
||||||
|
import System.FilePath
|
||||||
|
main = defaultMainWithHooks $ simpleUserHooks { runTests = runTests' }
|
||||||
|
runTests' :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()
|
||||||
|
runTests' _ _ _ lbi = system testprog >> return ()
|
||||||
|
where testprog = (buildDir lbi) </> "hledger" </> "hledger test"
|
||||||
|
|
||||||
|
-- queryStringFromAP a p = if null ap then "" else "?" ++ ap
|
||||||
|
-- where
|
||||||
|
-- ap = intercalate "&" [a',p']
|
||||||
|
-- a' = if null a then "" else printf "&a=%s" a
|
||||||
|
-- p' = if null p then "" else printf "&p=%s" p
|
||||||
|
|
||||||
|
-- toggleScriptFor name = [$hamlet|
|
||||||
|
-- <script type="text/javascript">
|
||||||
|
-- function $name$Toggle() {
|
||||||
|
-- e = document.getElementById('$name$');
|
||||||
|
-- link = document.getElementById('$name$link');
|
||||||
|
-- if (e.style.display == 'none') {
|
||||||
|
-- link.style['font-weight'] = 'bold';
|
||||||
|
-- e.style.display = 'block';
|
||||||
|
-- } else {
|
||||||
|
-- link.style['font-weight'] = 'normal';
|
||||||
|
-- e.style.display = 'none';
|
||||||
|
-- }
|
||||||
|
-- return false;
|
||||||
|
-- }
|
||||||
|
-- </script>
|
||||||
|
-- |]
|
||||||
|
|
||||||
|
-- group register report items by transaction
|
||||||
|
groupeditems [] = []
|
||||||
|
groupeditems items = is:(groupeditems js)
|
||||||
|
where (is,js) = span (\(ds,_,_) -> isNothing ds) items
|
||||||
|
|
||||||
|
|
||||||
|
/* html, body {height: 100%} */
|
||||||
|
/* #content {min-height: 100%} */
|
||||||
|
/* #editform textarea { height:100%; } */
|
||||||
|
|
||||||
|
/* input:focus { background-color: #efe; } */
|
||||||
|
|
||||||
|
/* a.tooltip {position: relative} */
|
||||||
|
/* a.tooltip span {display:none; padding:5px; width:200px;} */
|
||||||
|
/* a:hover {background:#fff;} /\*background-color is a must for IE6*\/ */
|
||||||
|
/* a.tooltip:hover span{display:inline; position:absolute;} */
|
||||||
|
|
||||||
|
/* div#page {width: 960px; margin: 0 auto} */
|
||||||
|
|
||||||
|
/* div#container {height: 35px; line-height: 35px} */
|
||||||
|
|
||||||
|
/* div#content {position: absolute; top: 50%; height: 500px; margin-top: -250px} */
|
||||||
|
|
||||||
|
/* div#content {position: absolute; top: 50%; left:50%; width:800px; height: 500px; margin-left: -400px; margin-top: -250px} */
|
||||||
|
|
||||||
|
/* div#button {background: #888; border: 1px solid; border-color: #999 #777 #777 #999 } */
|
||||||
|
|
||||||
|
/* .element {border-radius: 5px} */
|
||||||
|
|
||||||
|
; prototype "equalising" transactions
|
||||||
|
;
|
||||||
|
; generate a transfer between alice & bob equalising their contribution to rent's 5/1 balance
|
||||||
|
; A 2010/5/1 expenses:rent
|
||||||
|
; alice 50%
|
||||||
|
; bob 50%
|
||||||
|
|
||||||
|
; generate a transfer between alice & bob such that alice's contribution to car payment's 5/1 balance is $100
|
||||||
|
; A 2010/5/1 expenses:car:payment
|
||||||
|
; alice $100
|
||||||
|
; bob
|
||||||
|
|
||||||
|
; A 2010/5/1 expenses:car not:expenses:car:payment
|
||||||
|
; alice 50%
|
||||||
|
; bob
|
||||||
|
|
||||||
|
; A 2010/5/1 expenses:food
|
||||||
|
; alice
|
||||||
|
; bob
|
||||||
|
|
||||||
|
; A 2010/5/1 expenses:home
|
||||||
|
; alice
|
||||||
|
; bob
|
||||||
|
|
||||||
|
; A 2010/5/1 expenses:utilities
|
||||||
|
; alice
|
||||||
|
; bob
|
||||||
|
|
||||||
|
|
||||||
|
maybeFileInput :: String -> FormInput sub master (Maybe FileInfo)
|
||||||
|
maybeFileInput name = GForm $ \_ env -> do
|
||||||
|
let res = FormSuccess $ lookup name env
|
||||||
|
return (res, [addBody [$hamlet|
|
||||||
|
%input!type=file!name=$name$
|
||||||
|
|]], Multipart)
|
||||||
|
|
||||||
|
-- handler for add form auto-complete requests
|
||||||
|
-- <?php
|
||||||
|
-- header("Content-type:text/xml");
|
||||||
|
-- ini_set('max_execution_time', 600);
|
||||||
|
-- require_once('../../common/config.php');
|
||||||
|
-- print("<?xml version=\"1.0\"?>");
|
||||||
|
|
||||||
|
-- $link = mysql_pconnect($mysql_host, $mysql_user, $mysql_pasw);
|
||||||
|
-- $db = mysql_select_db ($mysql_db);
|
||||||
|
|
||||||
|
-- if (!isset($_GET["pos"])) $_GET["pos"]=0;
|
||||||
|
|
||||||
|
-- //Create database and table if doesn't exists
|
||||||
|
-- //mysql_create_db($mysql_db,$link);
|
||||||
|
-- $sql = "Select * from Countries";
|
||||||
|
-- $res = mysql_query ($sql);
|
||||||
|
-- if(!$res){
|
||||||
|
-- $sql = "CREATE TABLE Countries (item_id INT UNSIGNED not null AUTO_INCREMENT,item_nm VARCHAR (200),item_cd VARCHAR (15),PRIMARY KEY ( item_id ))";
|
||||||
|
-- $res = mysql_query ($sql);
|
||||||
|
-- populateDBRendom();
|
||||||
|
-- }else{
|
||||||
|
--
|
||||||
|
-- }
|
||||||
|
-- //populate db with 10000 records
|
||||||
|
-- function populateDBRendom(){
|
||||||
|
-- $filename = getcwd()."../../common/countries.txt";
|
||||||
|
-- $handle = fopen ($filename, "r");
|
||||||
|
-- $contents = fread ($handle, filesize ($filename));
|
||||||
|
-- $arWords = split("\r\n",$contents);
|
||||||
|
-- //print(count($arWords));
|
||||||
|
-- for($i=0;$i<count($arWords);$i++){
|
||||||
|
-- $nm = $arWords[$i];
|
||||||
|
-- $cd = rand(123456,987654);
|
||||||
|
-- $sql = "INsert into Countries(item_nm,item_cd) Values('".$nm."','".$cd."')";
|
||||||
|
-- mysql_query ($sql);
|
||||||
|
-- if($i==9999)
|
||||||
|
-- break;
|
||||||
|
-- }
|
||||||
|
-- fclose ($handle);
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- getDataFromDB($_GET["mask"]);
|
||||||
|
-- mysql_close($link);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- //print one level of the tree, based on parent_id
|
||||||
|
-- function getDataFromDB($mask){
|
||||||
|
-- $sql = "SELECT DISTINCT item_nm FROM Countries Where item_nm like '".mysql_real_escape_string($mask)."%'";
|
||||||
|
-- $sql.= " Order By item_nm LIMIT ". $_GET["pos"].",20";
|
||||||
|
|
||||||
|
-- if ( $_GET["pos"]==0)
|
||||||
|
-- print("<complete>");
|
||||||
|
-- else
|
||||||
|
-- print("<complete add='true'>");
|
||||||
|
-- $res = mysql_query ($sql);
|
||||||
|
-- if($res){
|
||||||
|
-- while($row=mysql_fetch_array($res)){
|
||||||
|
-- print("<option value=\"".$row["item_nm"]."\">");
|
||||||
|
-- print($row["item_nm"]);
|
||||||
|
-- print("</option>");
|
||||||
|
-- }
|
||||||
|
-- }else{
|
||||||
|
-- echo mysql_errno().": ".mysql_error()." at ".__LINE__." line in ".__FILE__." file<br>";
|
||||||
|
-- }
|
||||||
|
-- print("</complete>");
|
||||||
|
-- }
|
||||||
|
-- ?>
|
||||||
|
|
||||||
|
|
||||||
* journal
|
* journal
|
||||||
** 2010
|
** 2010
|
||||||
@ -856,3 +1000,19 @@ cleaned up notes
|
|||||||
*** 5/20
|
*** 5/20
|
||||||
converted manual to markdown
|
converted manual to markdown
|
||||||
more detailed installation docs
|
more detailed installation docs
|
||||||
|
*** 5/21
|
||||||
|
upgraded hakyll
|
||||||
|
fixed hakyll/pandoc quotes issue
|
||||||
|
*** 5/22
|
||||||
|
refactored journal/ledger construction
|
||||||
|
updated benchmarks
|
||||||
|
resolved register memory leak
|
||||||
|
*** 5/23
|
||||||
|
clarified Journal & Ledger roles
|
||||||
|
various 6.12, utf8 and other fixes
|
||||||
|
released 0.10
|
||||||
|
|
||||||
|
*** 5/24
|
||||||
|
implemented --flat, --drop
|
||||||
|
*** 5/25
|
||||||
|
support, investigated rounding issue
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user