ui: txn: make reloading work on this screen
This commit is contained in:
		
							parent
							
								
									ed775e1ef4
								
							
						
					
					
						commit
						8a4f3eaad4
					
				| @ -71,7 +71,7 @@ drawTransactionScreen _ = error "draw function called with wrong screen type, sh | ||||
| handleTransactionScreen :: AppState -> Vty.Event -> EventM (Next AppState) | ||||
| handleTransactionScreen st@AppState{ | ||||
|    aScreen=s@TransactionScreen{tsState=((i,t),nts,acct)} | ||||
|   ,aopts=UIOpts{cliopts_=_copts} | ||||
|   ,aopts=UIOpts{cliopts_=CliOpts{reportopts_=ropts}} | ||||
|   ,ajournal=j | ||||
|   } e = do | ||||
|   d <- liftIO getCurrentDay | ||||
| @ -86,7 +86,28 @@ handleTransactionScreen st@AppState{ | ||||
|       d <- liftIO getCurrentDay | ||||
|       ej <- liftIO $ journalReload j  -- (ej, changed) <- liftIO $ journalReloadIfChanged copts j | ||||
|       case ej of | ||||
|         Right j' -> continue $ reload j' d st | ||||
|         Right j' -> do | ||||
|           -- got to redo the register screen's transactions report, to get the latest transactions list for this screen | ||||
|           -- XXX duplicates initRegisterScreen | ||||
|           let | ||||
|             ropts' = ropts {depth_=Nothing | ||||
|                            ,balancetype_=HistoricalBalance | ||||
|                            } | ||||
|             q = filterQuery (not . queryIsDepth) $ queryFromOpts d ropts' | ||||
|             thisacctq = Acct $ accountNameToAccountRegex acct -- includes subs | ||||
|             items = reverse $ snd $ accountTransactionsReport ropts j' q thisacctq | ||||
|             ts = map first6 items | ||||
|             numberedts = zip [1..] ts | ||||
|             -- select the best current transaction from the new list | ||||
|             -- stay at the same index if possible, or if we are now past the end, select the last, otherwise select the first | ||||
|             (i',t') = case lookup i numberedts | ||||
|                       of Just t'' -> (i,t'') | ||||
|                          Nothing | null numberedts -> (0,nulltransaction) | ||||
|                                  | i > fst (last numberedts) -> last numberedts | ||||
|                                  | otherwise -> head numberedts | ||||
|             st' = st{aScreen=s{tsState=((i',t'),numberedts,acct)}} | ||||
|           continue $ reload j' d st' | ||||
| 
 | ||||
|         Left err -> continue $ screenEnter d ES.screen{esState=err} st | ||||
| 
 | ||||
|     -- Vty.EvKey (Vty.KChar 'C') [] -> continue $ reload j d $ stToggleCleared st | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user