web: more robust layout with wide content, style cleanups
This commit is contained in:
parent
e1bd767f61
commit
c3c20492bf
@ -414,9 +414,9 @@ filterform TD{here=here,a=a,p=p} = [$hamlet|
|
|||||||
visible = "block"
|
visible = "block"
|
||||||
filteringclass = if filtering then "filtering" else ""
|
filteringclass = if filtering then "filtering" else ""
|
||||||
filteringperiodclass = if filteringperiod then "filtering" else ""
|
filteringperiodclass = if filteringperiod then "filtering" else ""
|
||||||
stopfiltering = if filtering then [$hamlet|%a#stopfilterlink!href=@?u@ stop filtering acct/desc|] else nulltemplate
|
stopfiltering = if filtering then [$hamlet|%a#stopfilterlink!href=@?u@ clear filter|] else nulltemplate
|
||||||
where u = (here, if filteringperiod then [("p", p)] else [])
|
where u = (here, if filteringperiod then [("p", p)] else [])
|
||||||
stopfilteringperiod = if filteringperiod then [$hamlet|%a#stopfilterlink!href=@?u@ stop filtering period|] else nulltemplate
|
stopfilteringperiod = if filteringperiod then [$hamlet|%a#stopfilterlink!href=@?u@ clear filter|] else nulltemplate
|
||||||
where u = (here, if filtering then [("a", a)] else [])
|
where u = (here, if filtering then [("a", a)] else [])
|
||||||
|
|
||||||
-- | Link to a topic in the manual.
|
-- | Link to a topic in the manual.
|
||||||
@ -507,20 +507,21 @@ getJournalR = do
|
|||||||
-- t <- liftIO $ getCurrentLocalTime
|
-- t <- liftIO $ getCurrentLocalTime
|
||||||
let -- args = appArgs app
|
let -- args = appArgs app
|
||||||
-- fspec' = optsToFilterSpec opts args t
|
-- fspec' = optsToFilterSpec opts args t
|
||||||
br = balanceReportAsHtml opts td $ balanceReport opts fspec j
|
sidecontent = balanceReportAsHtml opts td $ balanceReport opts fspec j
|
||||||
jr = journalReportAsHtml opts td $ journalReport opts fspec j
|
maincontent = journalReportAsHtml opts td $ journalReport opts fspec j
|
||||||
td = mktd{here=here, title="hledger journal", msg=msg, a=a, p=p, j=j, today=today}
|
td = mktd{here=here, title="hledger journal", msg=msg, a=a, p=p, j=j, today=today}
|
||||||
editform' = editform td
|
editform' = editform td
|
||||||
hamletToRepHtml $ pageLayout td [$hamlet|
|
hamletToRepHtml $ pageLayout td [$hamlet|
|
||||||
%div#ledger
|
%div#content
|
||||||
%div#accounts ^br^
|
%div#sidebar
|
||||||
^navlinks.td^
|
^sidecontent^
|
||||||
^addform.td^
|
%div#main.journal
|
||||||
^editform'^
|
^navlinks.td^
|
||||||
^importform^
|
^addform.td^
|
||||||
%div#transactions.journal
|
^editform'^
|
||||||
^filterform.td^
|
^importform^
|
||||||
^jr^
|
^filterform.td^
|
||||||
|
^maincontent^
|
||||||
|]
|
|]
|
||||||
|
|
||||||
postJournalR :: Handler RepPlain
|
postJournalR :: Handler RepPlain
|
||||||
@ -538,20 +539,21 @@ getRegisterR = do
|
|||||||
let -- args = appArgs app
|
let -- args = appArgs app
|
||||||
-- opts' = Empty:opts
|
-- opts' = Empty:opts
|
||||||
-- fspec' = optsToFilterSpec opts' args t
|
-- fspec' = optsToFilterSpec opts' args t
|
||||||
br = balanceReportAsHtml opts td $ balanceReport opts fspec j
|
sidecontent = balanceReportAsHtml opts td $ balanceReport opts fspec j
|
||||||
rr = registerReportAsHtml opts td $ registerReport opts fspec j
|
maincontent = registerReportAsHtml opts td $ registerReport opts fspec j
|
||||||
td = mktd{here=here, title="hledger register", msg=msg, a=a, p=p, j=j, today=today}
|
td = mktd{here=here, title="hledger register", msg=msg, a=a, p=p, j=j, today=today}
|
||||||
editform' = editform td
|
editform' = editform td
|
||||||
hamletToRepHtml $ pageLayout td [$hamlet|
|
hamletToRepHtml $ pageLayout td [$hamlet|
|
||||||
%div#ledger
|
%div#content
|
||||||
%div#accounts ^br^
|
%div#sidebar
|
||||||
^navlinks.td^
|
^sidecontent^
|
||||||
^addform.td^
|
%div#main.journal
|
||||||
^editform'^
|
^navlinks.td^
|
||||||
^importform^
|
^addform.td^
|
||||||
%div#transactions.register
|
^editform'^
|
||||||
^filterform.td^
|
^importform^
|
||||||
^rr^
|
^filterform.td^
|
||||||
|
^maincontent^
|
||||||
|]
|
|]
|
||||||
|
|
||||||
postRegisterR :: Handler RepPlain
|
postRegisterR :: Handler RepPlain
|
||||||
@ -613,13 +615,13 @@ balanceReportAsHtml _ td@TD{here=here,a=a,p=p} (items,total) = [$hamlet|
|
|||||||
itemAsHtml' = itemAsHtml td
|
itemAsHtml' = itemAsHtml td
|
||||||
itemAsHtml :: TemplateData -> BalanceReportItem -> Hamlet AppRoute
|
itemAsHtml :: TemplateData -> BalanceReportItem -> Hamlet AppRoute
|
||||||
itemAsHtml TD{p=p} (acct, adisplay, adepth, abal) = [$hamlet|
|
itemAsHtml TD{p=p} (acct, adisplay, adepth, abal) = [$hamlet|
|
||||||
%tr.item.$current$
|
%tr.item
|
||||||
%td.account
|
%td.account
|
||||||
$indent$
|
$indent$
|
||||||
%a!href=$aurl$ $adisplay$
|
%a!href=$aurl$ $adisplay$
|
||||||
%td.balance!align=right $mixedAmountAsHtml.abal$
|
%td.balance!align=right $mixedAmountAsHtml.abal$
|
||||||
|] where
|
|] where
|
||||||
current = "" -- if not (null a) && containsRegex a acct then "current" else ""
|
-- current = if not (null a) && containsRegex a acct then "current" else ""
|
||||||
indent = preEscapedString $ concat $ replicate (2 * adepth) " "
|
indent = preEscapedString $ concat $ replicate (2 * adepth) " "
|
||||||
aurl = printf ".?a=%s%s" (accountNameToAccountRegex acct) p' :: String
|
aurl = printf ".?a=%s%s" (accountNameToAccountRegex acct) p' :: String
|
||||||
p' = if null p then "" else printf "&p=%s" p
|
p' = if null p then "" else printf "&p=%s" p
|
||||||
|
|||||||
@ -1,72 +1,94 @@
|
|||||||
/* hledger web ui styles */
|
/* hledger web ui styles */
|
||||||
|
|
||||||
/* font families & sizes */
|
/*------------------------------------------------------------------------------------------*/
|
||||||
|
/* 1. colours */
|
||||||
|
|
||||||
|
/* green */
|
||||||
|
body { background-color:#efe; }
|
||||||
|
.registerreport .odd { background-color:#ded; }
|
||||||
|
.filtering { background-color:#ded; }
|
||||||
|
/* white */
|
||||||
|
/* body { background-color:#fff; } */
|
||||||
|
/* .registerreport .odd { background-color:#eee; } */
|
||||||
|
/* .filtering { background-color:#ddd; } */
|
||||||
|
|
||||||
|
.negative { color:#800; }
|
||||||
|
#messages { color:red; background-color:#fee; }
|
||||||
|
#addform input.textinput, #addform .dhx_combo_input, .dhx_combo_list { background-color:#eee; }
|
||||||
|
#editform textarea { background-color:#eee; }
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------------------*/
|
||||||
|
/* 2. font families & sizes */
|
||||||
/* overspecified for cross-browser robustness */
|
/* overspecified for cross-browser robustness */
|
||||||
body { font-family:helvetica,arial,"sans serif"; }
|
body { font-family:helvetica,arial,"sans serif"; }
|
||||||
pre { font-family:courier,"courier new",monospace; }
|
pre { font-family:courier,"courier new",monospace; }
|
||||||
input.textinput, .dhx_combo_input, .dhx_combo_list { font-size:small; }
|
input.textinput, .dhx_combo_input, .dhx_combo_list { font-size:small; }
|
||||||
#editform textarea { font-family:courier,"courier new",monospace; font-size:small; }
|
#editform textarea { font-family:courier,"courier new",monospace; font-size:small; }
|
||||||
.nav2 { font-size:small; }
|
.nav2 { font-size:small; }
|
||||||
#filterform { font-size:small; }
|
#filterform { font-size:small; }
|
||||||
.topleftlink { font-size:small; }
|
.topleftlink { font-size:small; }
|
||||||
.toprightlink { font-size:small; }
|
.toprightlink { font-size:small; }
|
||||||
#journaldesc { font-size:small; }
|
#journaldesc { font-size:small; }
|
||||||
.help { font-size:smaller; }
|
.help { font-size:smaller; }
|
||||||
.form { font-size:small; }
|
.form { font-size:small; }
|
||||||
.journalreport { font-size:small; }
|
.journalreport { font-size:small; }
|
||||||
.balancereport { font-size:small; }
|
.balancereport { font-size:small; }
|
||||||
.registerreport { font-size:small; }
|
.registerreport { font-size:small; }
|
||||||
#showmoreaccounts { font-size:small; }
|
#showmoreaccounts { font-size:small; }
|
||||||
/* #addformlink { font-size:small; } */
|
/* #addformlink { font-size:small; } */
|
||||||
/* #editformlink { font-size:small; } */
|
/* #editformlink { font-size:small; } */
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------------------*/
|
||||||
|
/* 3. layout */
|
||||||
|
|
||||||
body { margin:0; }
|
body { margin:0; }
|
||||||
|
|
||||||
#navbar { padding:2px; }
|
#navbar { padding:2px; }
|
||||||
.topleftlink { float:left; margin-right:1em; padding:2px; }
|
.topleftlink { float:left; margin-right:1em; padding:2px; }
|
||||||
.toprightlink { float:right; margin-left:1em; padding:2px; }
|
.toprightlink { float:right; margin-left:1em; padding:2px; }
|
||||||
#navbar h1 { display:inline-block; vertical-align:top; margin:0; }
|
#navbar h1 { display:inline-block; vertical-align:top; margin:0; }
|
||||||
#journalinfo { vertical-align:middle; margin:0; }
|
#journalinfo { vertical-align:middle; margin:0; }
|
||||||
/* #navbar { padding:4px; background-color:#eee; border-bottom:2px solid #ddd; } */
|
/* #navbar { padding:4px; border-bottom:2px solid #ddd; } */
|
||||||
#messages { color:red; background-color:#ffeeee; margin:0.5em;}
|
|
||||||
|
#messages { margin:0.5em;}
|
||||||
.help { font-style: italic; }
|
.help { font-style: italic; }
|
||||||
.helprow td { padding-bottom:8px; }
|
.helprow td { padding-bottom:8px; }
|
||||||
#content { margin:1em; }
|
|
||||||
|
#content { padding:4px; }
|
||||||
|
|
||||||
|
#sidebar { float:left; padding-right:1em; margin-bottom:5em; }
|
||||||
|
|
||||||
|
#main { overflow:auto; border-left:thin solid #ded; padding-left:1em; }
|
||||||
|
|
||||||
#navlinks { margin-bottom:1em; }
|
#navlinks { margin-bottom:1em; }
|
||||||
.navlink { }
|
.navlink { }
|
||||||
.navlinkcurrent { font-weight:bold; }
|
.navlinkcurrent { font-weight:bold; }
|
||||||
.form { margin:1em; }
|
.form { margin:0em; }
|
||||||
|
|
||||||
#filterformdiv { margin:0 0 1em 0; white-space:nowrap; }
|
#filterformdiv { margin:0 0 1em 0; white-space:nowrap; }
|
||||||
#filterform { margin:0; }
|
#filterform { margin:0; }
|
||||||
#filterform span { padding:4px; }
|
#filterform span { padding:4px; }
|
||||||
#stopfilterlink { font-weight:bold; }
|
#stopfilterlink { font-weight:bold; }
|
||||||
.filtering { background-color:#ddd; }
|
.filtering { font-weight:bold; }
|
||||||
|
|
||||||
div#floatcontainer { white-space:nowrap; }
|
#main .journal { }
|
||||||
div#accounts { float:left; padding-right:1em; border-right:thin solid #eee; margin-right:1em; margin-bottom:5em; }
|
#main .register { }
|
||||||
div#transactions { }
|
/* .current { font-weight:bold; } */
|
||||||
|
|
||||||
div.journal { }
|
|
||||||
div.register { }
|
|
||||||
|
|
||||||
.current { font-weight:bold; background-color:#ddd; }
|
|
||||||
.description { padding-left:1em; white-space:normal; }
|
.description { padding-left:1em; white-space:normal; }
|
||||||
.account { white-space:nowrap; padding-left:1em; }
|
#transactions .account { white-space:nowrap; padding-left:1em; }
|
||||||
.amount { white-space:nowrap; padding-left:1em; }
|
.amount { white-space:nowrap; padding-left:1em; }
|
||||||
.balance { white-space:nowrap; padding-left:1em; }
|
.balance { white-space:nowrap; padding-left:1em; }
|
||||||
.account, .amount, .balance { width:2em; } /* minimum width */
|
.account, .amount, .balance { width:2em; } /* minimum width */
|
||||||
.positive { }
|
.positive { }
|
||||||
.negative { color:#800; }
|
|
||||||
/* .odd { background-color:#e8e8e8; } */
|
|
||||||
/* .even { background-color:#e8f8e8; } */
|
|
||||||
/* .even { background-color:#f0fff0; } */
|
|
||||||
|
|
||||||
table.journalreport { border-spacing: 0; }
|
table.journalreport { border-spacing: 0; }
|
||||||
.journalreport td { border-top:thin solid #eee; }
|
.journalreport td { border-top:thin solid #eee; }
|
||||||
.journalreport pre { margin-top:0; }
|
.journalreport pre { margin-top:0; }
|
||||||
|
|
||||||
.balancereport tr { vertical-align:top; }
|
.balancereport { border-spacing:0; }
|
||||||
table.balancereport { border-spacing:0; }
|
.balancereport tr { vertical-align:bottom; border-spacing:0; }
|
||||||
|
.balancereport .title { white-space:nowrap; }
|
||||||
|
.balancereport .item { }
|
||||||
.balancereport td { padding:0; }
|
.balancereport td { padding:0; }
|
||||||
.totalrule td { border-top:thin solid black; }
|
.totalrule td { border-top:thin solid black; }
|
||||||
|
|
||||||
@ -75,17 +97,17 @@ table.registerreport { border-spacing:0; }
|
|||||||
.registerreport td { padding-bottom:0.2em; }
|
.registerreport td { padding-bottom:0.2em; }
|
||||||
.registerreport .date { white-space:nowrap; }
|
.registerreport .date { white-space:nowrap; }
|
||||||
.firstposting td { }
|
.firstposting td { }
|
||||||
.registerreport .odd { background-color:#f0f0f0; }
|
|
||||||
|
|
||||||
#addform input.textinput, #addform .dhx_combo_input, .dhx_combo_list { background-color:#eee; padding:4px; }
|
#addform input.textinput, #addform .dhx_combo_input, .dhx_combo_list { padding:4px; }
|
||||||
#addform table { }
|
#addform table { }
|
||||||
#addform #addbuttonrow { text-align:right; }
|
#addform #addbuttonrow { text-align:right; }
|
||||||
/* #editform { width:95%; } */
|
/* #editform { width:95%; } */
|
||||||
#editform textarea { width:100%; background-color:#eee; padding:4px; }
|
#editform textarea { width:100%; padding:4px; }
|
||||||
#filterform table { border-spacing:0; padding-left:1em; }
|
#filterform table { border-spacing:0; padding-left:0em; }
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------------------*/
|
||||||
|
/* 4. dhtmlx.com auto-completing combo box styles */
|
||||||
|
|
||||||
.dhx_combo_input{
|
.dhx_combo_input{
|
||||||
/* color:#333333; */
|
/* color:#333333; */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user