web: groundwork for an import form
This commit is contained in:
parent
bd3d8b1c8d
commit
ff6b979816
@ -186,6 +186,7 @@ getAccountsJournalPage = do
|
|||||||
^navlinks.td^
|
^navlinks.td^
|
||||||
^addform^
|
^addform^
|
||||||
^editform'^
|
^editform'^
|
||||||
|
^importform^
|
||||||
%div#transactions.journal
|
%div#transactions.journal
|
||||||
^filterform.td^
|
^filterform.td^
|
||||||
^jr^
|
^jr^
|
||||||
@ -216,6 +217,7 @@ getAccountsRegisterPage = do
|
|||||||
^navlinks.td^
|
^navlinks.td^
|
||||||
^addform^
|
^addform^
|
||||||
^editform'^
|
^editform'^
|
||||||
|
^importform^
|
||||||
%div#transactions.register
|
%div#transactions.register
|
||||||
^filterform.td^
|
^filterform.td^
|
||||||
^rr^
|
^rr^
|
||||||
@ -371,7 +373,7 @@ addform = [$hamlet|
|
|||||||
^transactionfields2^
|
^transactionfields2^
|
||||||
%tr#addbuttonrow
|
%tr#addbuttonrow
|
||||||
%td!colspan=4
|
%td!colspan=4
|
||||||
%input!type=hidden!name=add!value=1
|
%input!type=hidden!name=action!value=add
|
||||||
%input!type=submit!name=submit!value="add transaction"
|
%input!type=submit!name=submit!value="add transaction"
|
||||||
|]
|
|]
|
||||||
where
|
where
|
||||||
@ -432,7 +434,7 @@ editform _ content = [$hamlet|
|
|||||||
%span.help ^formathelp^
|
%span.help ^formathelp^
|
||||||
%td!align=right
|
%td!align=right
|
||||||
%span.help Are you sure ? This will overwrite the journal. $
|
%span.help Are you sure ? This will overwrite the journal. $
|
||||||
%input!type=hidden!name=edit!value=1
|
%input!type=hidden!name=action!value=edit
|
||||||
%input!type=submit!name=submit!value="save journal"
|
%input!type=submit!name=submit!value="save journal"
|
||||||
\ or $
|
\ or $
|
||||||
%a!href!onclick="return editformToggle()" cancel
|
%a!href!onclick="return editformToggle()" cancel
|
||||||
@ -440,12 +442,35 @@ editform _ content = [$hamlet|
|
|||||||
where
|
where
|
||||||
formathelp = helplink "file-format" "file format help"
|
formathelp = helplink "file-format" "file format help"
|
||||||
|
|
||||||
|
importform :: Hamlet HledgerWebAppRoute
|
||||||
|
importform = [$hamlet|
|
||||||
|
%form#importform!method=POST!style=display:none;
|
||||||
|
%table.form
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
%input!type=file!name=file
|
||||||
|
%input!type=hidden!name=action!value=import
|
||||||
|
%input!type=submit!name=submit!value="import from file"
|
||||||
|
\ or $
|
||||||
|
%a!href!onclick="return importformToggle()" cancel
|
||||||
|
|]
|
||||||
|
|
||||||
scripts = [$hamlet|
|
scripts = [$hamlet|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
function filterformToggle() {
|
function filterformToggle() {
|
||||||
f = document.getElementById('filterform');
|
var a = document.getElementById('addform');
|
||||||
flink = document.getElementById('filterformlink');
|
var e = document.getElementById('editform');
|
||||||
|
var f = document.getElementById('filterform');
|
||||||
|
var i = document.getElementById('importform');
|
||||||
|
var t = document.getElementById('transactions');
|
||||||
|
var alink = document.getElementById('addformlink');
|
||||||
|
var elink = document.getElementById('editformlink');
|
||||||
|
var flink = document.getElementById('filterformlink');
|
||||||
|
var ilink = document.getElementById('importformlink');
|
||||||
|
var jlink = document.getElementById('journallink');
|
||||||
|
var rlink = document.getElementById('registerlink');
|
||||||
|
|
||||||
if (f.style.display == 'none') {
|
if (f.style.display == 'none') {
|
||||||
flink.style['font-weight'] = 'bold';
|
flink.style['font-weight'] = 'bold';
|
||||||
f.style.display = 'block';
|
f.style.display = 'block';
|
||||||
@ -457,52 +482,105 @@ scripts = [$hamlet|
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addformToggle() {
|
function addformToggle() {
|
||||||
a = document.getElementById('addform');
|
var a = document.getElementById('addform');
|
||||||
e = document.getElementById('editform');
|
var e = document.getElementById('editform');
|
||||||
t = document.getElementById('transactions');
|
var f = document.getElementById('filterform');
|
||||||
alink = document.getElementById('addformlink');
|
var i = document.getElementById('importform');
|
||||||
elink = document.getElementById('editformlink');
|
var t = document.getElementById('transactions');
|
||||||
jlink = document.getElementById('journallink');
|
var alink = document.getElementById('addformlink');
|
||||||
rlink = document.getElementById('registerlink');
|
var elink = document.getElementById('editformlink');
|
||||||
|
var flink = document.getElementById('filterformlink');
|
||||||
|
var ilink = document.getElementById('importformlink');
|
||||||
|
var jlink = document.getElementById('journallink');
|
||||||
|
var rlink = document.getElementById('registerlink');
|
||||||
|
|
||||||
if (a.style.display == 'none') {
|
if (a.style.display == 'none') {
|
||||||
alink.style['font-weight'] = 'bold';
|
alink.style['font-weight'] = 'bold';
|
||||||
elink.style['font-weight'] = 'normal';
|
elink.style['font-weight'] = 'normal';
|
||||||
|
ilink.style['font-weight'] = 'normal';
|
||||||
jlink.style['font-weight'] = 'normal';
|
jlink.style['font-weight'] = 'normal';
|
||||||
rlink.style['font-weight'] = 'normal';
|
rlink.style['font-weight'] = 'normal';
|
||||||
a.style.display = 'block';
|
a.style.display = 'block';
|
||||||
e.style.display = 'none';
|
e.style.display = 'none';
|
||||||
|
i.style.display = 'none';
|
||||||
t.style.display = 'none';
|
t.style.display = 'none';
|
||||||
} else {
|
} else {
|
||||||
alink.style['font-weight'] = 'normal';
|
alink.style['font-weight'] = 'normal';
|
||||||
elink.style['font-weight'] = 'normal';
|
elink.style['font-weight'] = 'normal';
|
||||||
|
ilink.style['font-weight'] = 'normal';
|
||||||
a.style.display = 'none';
|
a.style.display = 'none';
|
||||||
e.style.display = 'none';
|
e.style.display = 'none';
|
||||||
|
i.style.display = 'none';
|
||||||
t.style.display = 'block';
|
t.style.display = 'block';
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function editformToggle() {
|
function editformToggle() {
|
||||||
a = document.getElementById('addform');
|
var a = document.getElementById('addform');
|
||||||
e = document.getElementById('editform');
|
var e = document.getElementById('editform');
|
||||||
t = document.getElementById('transactions');
|
var f = document.getElementById('filterform');
|
||||||
alink = document.getElementById('addformlink');
|
var i = document.getElementById('importform');
|
||||||
elink = document.getElementById('editformlink');
|
var t = document.getElementById('transactions');
|
||||||
jlink = document.getElementById('journallink');
|
var alink = document.getElementById('addformlink');
|
||||||
rlink = document.getElementById('registerlink');
|
var elink = document.getElementById('editformlink');
|
||||||
|
var flink = document.getElementById('filterformlink');
|
||||||
|
var ilink = document.getElementById('importformlink');
|
||||||
|
var jlink = document.getElementById('journallink');
|
||||||
|
var rlink = document.getElementById('registerlink');
|
||||||
|
|
||||||
if (e.style.display == 'none') {
|
if (e.style.display == 'none') {
|
||||||
alink.style['font-weight'] = 'normal';
|
alink.style['font-weight'] = 'normal';
|
||||||
elink.style['font-weight'] = 'bold';
|
elink.style['font-weight'] = 'bold';
|
||||||
|
ilink.style['font-weight'] = 'normal';
|
||||||
jlink.style['font-weight'] = 'normal';
|
jlink.style['font-weight'] = 'normal';
|
||||||
rlink.style['font-weight'] = 'normal';
|
rlink.style['font-weight'] = 'normal';
|
||||||
a.style.display = 'none';
|
a.style.display = 'none';
|
||||||
e.style.display = 'block';
|
e.style.display = 'block';
|
||||||
|
i.style.display = 'none';
|
||||||
t.style.display = 'none';
|
t.style.display = 'none';
|
||||||
} else {
|
} else {
|
||||||
alink.style['font-weight'] = 'normal';
|
alink.style['font-weight'] = 'normal';
|
||||||
elink.style['font-weight'] = 'normal';
|
elink.style['font-weight'] = 'normal';
|
||||||
|
ilink.style['font-weight'] = 'normal';
|
||||||
a.style.display = 'none';
|
a.style.display = 'none';
|
||||||
e.style.display = 'none';
|
e.style.display = 'none';
|
||||||
|
i.style.display = 'none';
|
||||||
|
t.style.display = 'block';
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function importformToggle() {
|
||||||
|
var a = document.getElementById('addform');
|
||||||
|
var e = document.getElementById('editform');
|
||||||
|
var f = document.getElementById('filterform');
|
||||||
|
var i = document.getElementById('importform');
|
||||||
|
var t = document.getElementById('transactions');
|
||||||
|
var alink = document.getElementById('addformlink');
|
||||||
|
var elink = document.getElementById('editformlink');
|
||||||
|
var flink = document.getElementById('filterformlink');
|
||||||
|
var ilink = document.getElementById('importformlink');
|
||||||
|
var jlink = document.getElementById('journallink');
|
||||||
|
var rlink = document.getElementById('registerlink');
|
||||||
|
|
||||||
|
if (i.style.display == 'none') {
|
||||||
|
alink.style['font-weight'] = 'normal';
|
||||||
|
elink.style['font-weight'] = 'normal';
|
||||||
|
ilink.style['font-weight'] = 'bold';
|
||||||
|
jlink.style['font-weight'] = 'normal';
|
||||||
|
rlink.style['font-weight'] = 'normal';
|
||||||
|
a.style.display = 'none';
|
||||||
|
e.style.display = 'none';
|
||||||
|
i.style.display = 'block';
|
||||||
|
t.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
alink.style['font-weight'] = 'normal';
|
||||||
|
elink.style['font-weight'] = 'normal';
|
||||||
|
ilink.style['font-weight'] = 'normal';
|
||||||
|
a.style.display = 'none';
|
||||||
|
e.style.display = 'none';
|
||||||
|
i.style.display = 'none';
|
||||||
t.style.display = 'block';
|
t.style.display = 'block';
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -513,8 +591,10 @@ scripts = [$hamlet|
|
|||||||
|
|
||||||
postJournalOnlyPage :: Handler HledgerWebApp RepPlain
|
postJournalOnlyPage :: Handler HledgerWebApp RepPlain
|
||||||
postJournalOnlyPage = do
|
postJournalOnlyPage = do
|
||||||
edit <- runFormPost' $ maybeStringInput "edit"
|
action <- runFormPost' $ maybeStringInput "action"
|
||||||
if isJust edit then postEditForm else postAddForm
|
case action of Just "edit" -> postEditForm
|
||||||
|
Just "import" -> postImportForm
|
||||||
|
_ -> postAddForm
|
||||||
|
|
||||||
-- | Handle a journal add form post.
|
-- | Handle a journal add form post.
|
||||||
postAddForm :: Handler HledgerWebApp RepPlain
|
postAddForm :: Handler HledgerWebApp RepPlain
|
||||||
@ -610,6 +690,24 @@ postEditForm = do
|
|||||||
redirect RedirectTemporary AccountsJournalPage)
|
redirect RedirectTemporary AccountsJournalPage)
|
||||||
jE
|
jE
|
||||||
|
|
||||||
|
-- | Handle an import page post.
|
||||||
|
postImportForm :: Handler HledgerWebApp RepPlain
|
||||||
|
postImportForm = do
|
||||||
|
setMessage $ string $ "can't handle file upload yet"
|
||||||
|
redirect RedirectTemporary AccountsJournalPage
|
||||||
|
-- -- get form input values, or basic validation errors. E means an Either value.
|
||||||
|
-- fileM <- runFormPost' $ maybeFileInput "file"
|
||||||
|
-- let fileE = maybe (Left "No file provided") Right fileM
|
||||||
|
-- -- display errors or import transactions
|
||||||
|
-- case fileE of
|
||||||
|
-- Left errs -> do
|
||||||
|
-- setMessage $ string errs
|
||||||
|
-- redirect RedirectTemporary AccountsJournalPage
|
||||||
|
|
||||||
|
-- Right s -> do
|
||||||
|
-- setMessage $ string $ s
|
||||||
|
-- redirect RedirectTemporary AccountsJournalPage
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
-- | A simple postings view like hledger register.
|
-- | A simple postings view like hledger register.
|
||||||
@ -707,9 +805,11 @@ navlinks td = [$hamlet|
|
|||||||
\ | $
|
\ | $
|
||||||
%a#editformlink!href!onclick="return editformToggle()" edit journal
|
%a#editformlink!href!onclick="return editformToggle()" edit journal
|
||||||
|]
|
|]
|
||||||
|
-- \ | $
|
||||||
|
-- %a#importformlink!href!onclick="return importformToggle()" import transactions
|
||||||
where
|
where
|
||||||
accountsjournallink = navlink td "journal" AccountsJournalPage
|
accountsjournallink = navlink td "journal" AccountsJournalPage
|
||||||
accountsregisterlink = navlink td "register" AccountsRegisterPage
|
accountsregisterlink = navlink td "register" AccountsRegisterPage
|
||||||
|
|
||||||
navlink :: TemplateData -> String -> HledgerWebAppRoute -> Hamlet HledgerWebAppRoute
|
navlink :: TemplateData -> String -> HledgerWebAppRoute -> Hamlet HledgerWebAppRoute
|
||||||
navlink TD{here=here,a=a,p=p} s dest = [$hamlet|%a#$s$link.$style$!href=@?u@ $s$|]
|
navlink TD{here=here,a=a,p=p} s dest = [$hamlet|%a#$s$link.$style$!href=@?u@ $s$|]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user