/********************************************************************************************************************* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * * * Permission is hereby granted, free of charge, to any person obtaining a copy of * * this software and associated documentation files (the "Software"), to deal in * * the Software without restriction, including without limitation the rights to * * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * * the Software, and to permit persons to whom the Software is furnished to do so. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * *********************************************************************************************************************/ import { Button, Inline, Table, ButtonIcon } from 'aws-northstar' import { FunctionComponent } from 'react' import { useHistory } from 'react-router-dom' import { useAssetContext } from '../../../contexts/AssetContext' import { appvars } from '../../../config' import { columnDefinitions } from './table-columns' export const AssetList: FunctionComponent = () => { const history = useHistory() const [{ assets, isLoading }, { refreshAssets }] = useAssetContext() const onCreateClick = () => { history.push(`/${appvars.URL.ASSET}/new`) } const onRefreshClick = async () => { refreshAssets() } const tableActions = ( <Inline> <Button onClick={onRefreshClick}> <ButtonIcon type='refresh' /> </Button> <Button onClick={onCreateClick} variant='primary'> Create asset </Button> </Inline> ) return ( <Table tableTitle={'Assets'} columnDefinitions={columnDefinitions} items={assets} loading={isLoading} actionGroup={tableActions} multiSelect={false} disableRowSelect={true} defaultPageSize={50} sortBy={[{ id: 'ticker', desc: false }]} pageSizes={[25, 50, 100]} rowCount={assets.length} /> ) }