summaryrefslogtreecommitdiff
path: root/packages/frontend/src/paths/instance/reserves/list/Table.tsx
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-11-29 00:21:38 -0300
committerSebastian <sebasjm@gmail.com>2021-11-29 00:48:56 -0300
commit30d06a1a2d53a51c01a99832868cd6b2055c5845 (patch)
tree5b64a7bbb30fa6a8e52a7a4277daa9a9b3c61720 /packages/frontend/src/paths/instance/reserves/list/Table.tsx
parentf9cc132158775b3b7526d7f0b8021134efeeef41 (diff)
downloadmerchant-backoffice-30d06a1a2d53a51c01a99832868cd6b2055c5845.tar.gz
merchant-backoffice-30d06a1a2d53a51c01a99832868cd6b2055c5845.tar.bz2
merchant-backoffice-30d06a1a2d53a51c01a99832868cd6b2055c5845.zip
rename project
Diffstat (limited to 'packages/frontend/src/paths/instance/reserves/list/Table.tsx')
-rw-r--r--packages/frontend/src/paths/instance/reserves/list/Table.tsx184
1 files changed, 0 insertions, 184 deletions
diff --git a/packages/frontend/src/paths/instance/reserves/list/Table.tsx b/packages/frontend/src/paths/instance/reserves/list/Table.tsx
deleted file mode 100644
index a76edf6..0000000
--- a/packages/frontend/src/paths/instance/reserves/list/Table.tsx
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021 Taler Systems S.A.
-
- GNU 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.
-
- GNU 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
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
-
-import { format } from "date-fns"
-import { Fragment, h, VNode } from "preact"
-import { MerchantBackend, WithId } from "../../../../declaration"
-import { Translate, useTranslator } from "../../../../i18n"
-
-type Entity = MerchantBackend.Tips.ReserveStatusEntry & WithId
-
-interface Props {
- instances: Entity[];
- onNewTip: (id: Entity) => void;
- onSelect: (id: Entity) => void;
- onDelete: (id: Entity) => void;
- onCreate: () => void;
-}
-
-export function CardTable({ instances, onCreate, onSelect, onNewTip, onDelete }: Props): VNode {
-
- const [withoutFunds, withFunds] = instances.reduce((prev, current) => {
- const amount = current.exchange_initial_amount
- if (amount.endsWith(':0')) {
- prev[0] = prev[0].concat(current)
- } else {
- prev[1] = prev[1].concat(current)
- }
- return prev
- }, new Array<Array<Entity>>([], []))
-
- const i18n = useTranslator()
-
- return <Fragment>
- {withoutFunds.length > 0 && <div class="card has-table">
- <header class="card-header">
- <p class="card-header-title"><span class="icon"><i class="mdi mdi-cash" /></span><Translate>Reserves not yet funded</Translate></p>
- </header>
- <div class="card-content">
- <div class="b-table has-pagination">
- <div class="table-wrapper has-mobile-cards">
- <TableWithoutFund instances={withoutFunds} onNewTip={onNewTip} onSelect={onSelect} onDelete={onDelete} />
- </div>
- </div>
- </div>
- </div>}
-
- <div class="card has-table">
- <header class="card-header">
- <p class="card-header-title"><span class="icon"><i class="mdi mdi-cash" /></span><Translate>Reserves ready</Translate></p>
- <div class="card-header-icon" aria-label="more options" />
- <div class="card-header-icon" aria-label="more options">
- <span class="has-tooltip-left" data-tooltip={i18n`add new reserve`}>
-
- <button class="button is-info" type="button" onClick={onCreate} >
- <span class="icon is-small" ><i class="mdi mdi-plus mdi-36px" /></span>
- </button>
- </span>
- </div>
- </header>
- <div class="card-content">
- <div class="b-table has-pagination">
- <div class="table-wrapper has-mobile-cards">
- {withFunds.length > 0 ?
- <Table instances={withFunds} onNewTip={onNewTip} onSelect={onSelect} onDelete={onDelete} /> :
- <EmptyTable />
- }
- </div>
- </div>
- </div>
- </div>
- </Fragment>
-}
-interface TableProps {
- instances: Entity[];
- onNewTip: (id: Entity) => void;
- onDelete: (id: Entity) => void;
- onSelect: (id: Entity) => void;
-}
-
-function Table({ instances, onNewTip, onSelect, onDelete }: TableProps): VNode {
- const i18n = useTranslator()
- return (
- <div class="table-container">
- <table class="table is-fullwidth is-striped is-hoverable is-fullwidth">
- <thead>
- <tr>
- <th><Translate>Created at</Translate></th>
- <th><Translate>Expires at</Translate></th>
- <th><Translate>Initial</Translate></th>
- <th><Translate>Picked up</Translate></th>
- <th><Translate>Committed</Translate></th>
- <th />
- </tr>
- </thead>
- <tbody>
- {instances.map(i => {
- return <tr key={i.id}>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.creation_time.t_ms === "never" ? "never" : format(i.creation_time.t_ms, 'yyyy/MM/dd HH:mm:ss')}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.expiration_time.t_ms === "never" ? "never" : format(i.expiration_time.t_ms, 'yyyy/MM/dd HH:mm:ss')}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.exchange_initial_amount}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.pickup_amount}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.committed_amount}</td>
- <td class="is-actions-cell right-sticky">
- <div class="buttons is-right">
- <button class="button is-small is-danger has-tooltip-left"
- data-tooltip={i18n`delete selected reserve from the database`}
- type="button" onClick={(): void => onDelete(i)}>
- Delete
- </button>
- <button class="button is-small is-info has-tooltip-left"
- data-tooltip={i18n`authorize new tip from selected reserve`}
- type="button" onClick={(): void => onNewTip(i)}>
- New Tip
- </button>
- </div>
- </td>
- </tr>
- })}
-
- </tbody>
- </table></div>)
-}
-
-function EmptyTable(): VNode {
- return <div class="content has-text-grey has-text-centered">
- <p>
- <span class="icon is-large"><i class="mdi mdi-emoticon-sad mdi-48px" /></span>
- </p>
- <p><Translate>There is no ready reserves yet, add more pressing the + sign or fund them</Translate></p>
- </div>
-}
-
-function TableWithoutFund({ instances, onSelect, onDelete }: TableProps): VNode {
- const i18n = useTranslator()
- return (
- <div class="table-container">
- <table class="table is-fullwidth is-striped is-hoverable is-fullwidth">
- <thead>
- <tr>
- <th><Translate>Created at</Translate></th>
- <th><Translate>Expires at</Translate></th>
- <th><Translate>Expected Balance</Translate></th>
- <th />
- </tr>
- </thead>
- <tbody>
- {instances.map(i => {
- return <tr key={i.id}>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.creation_time.t_ms === "never" ? "never" : format(i.creation_time.t_ms, 'yyyy/MM/dd HH:mm:ss')}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.expiration_time.t_ms === "never" ? "never" : format(i.expiration_time.t_ms, 'yyyy/MM/dd HH:mm:ss')}</td>
- <td onClick={(): void => onSelect(i)} style={{ cursor: 'pointer' }} >{i.merchant_initial_amount}</td>
- <td class="is-actions-cell right-sticky">
- <div class="buttons is-right">
- <button class="button is-small is-danger jb-modal has-tooltip-left" type="button"
- data-tooltip={i18n`delete selected reserve from the database`}
- onClick={(): void => onDelete(i)}>
- Delete
- </button>
- </div>
- </td>
- </tr>
- })}
-
- </tbody>
- </table></div>)
-}