diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-18 04:09:04 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-18 04:09:04 +0100 |
commit | 356ebd2137eb5ca31486ed49ab8223c8256b1554 (patch) | |
tree | f3aa2214b928119b3d6e5ba22b8fa348fa929c25 /src/pages/logs.tsx | |
parent | 2986afb3d4e5f750f34e68cd46e394e2da392a4a (diff) |
persistent logging
Diffstat (limited to 'src/pages/logs.tsx')
-rw-r--r-- | src/pages/logs.tsx | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/pages/logs.tsx b/src/pages/logs.tsx new file mode 100644 index 000000000..f971f3f85 --- /dev/null +++ b/src/pages/logs.tsx @@ -0,0 +1,76 @@ +/* + This file is part of TALER + (C) 2016 Inria + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * Show wallet logs. + * + * @author Florian Dold + */ + +import {LogEntry, getLogs} from "src/logging"; + +interface LogViewProps { + log: LogEntry; +} + +class LogView extends React.Component<LogViewProps, void> { + render(): JSX.Element { + let e = this.props.log; + return ( + <div className="tree-item"> + <ul> + <li>id: {e.id || "unknown"}</li> + <li>msg: {e.msg}</li> + <li>file: {e.source || "(unknown)"}</li> + </ul> + </div> + ); + } +} + +interface LogsState { + logs: LogEntry[]|undefined; +} + +class Logs extends React.Component<any, LogsState> { + constructor() { + super(); + this.update(); + this.state = {} as any; + } + + async update() { + let logs = await getLogs(); + this.setState({logs}); + } + + render(): JSX.Element { + let logs = this.state.logs; + if (!logs) { + return <span>...</span>; + } + return ( + <div className="tree-item"> + Logs: + {logs.map(e => <LogView log={e} />)} + </div> + ); + } +} + +export function main() { + ReactDOM.render(<Logs />, document.getElementById("container")!); +} |