Rev 15055 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import PaginationComponent from '../../shared/PaginationComponent'import Table from './Table'const TableFilters = ({data,getData,onAdd,headers,onDelete,onEdit,allowAdd,allowEdit,allowDelete,allowUsersWhoApplied,handleUserWhoApplied,labels}) => {const [search, setSearch] = useState('')const [dataLength, setDataLength] = useState(10)const [startItem, setStartItem] = useState(1)const [lastItem, setLastItem] = useState(10)const [pages, setPages] = useState({current: 1,last: 1})const lengthValues = ['10', '25', '50', '100']useEffect(() => {getData(search, pages.current, dataLength)}, [search, dataLength, pages.current])useEffect(() => {setPages({ ...pages, last: Math.ceil(data.total / dataLength) })}, [data.total])useEffect(() => {if (pages.current > 1) {setStartItem((dataLength * (pages.current - 1)) + 1)} else {setStartItem(1)}}, [pages.current])useEffect(() => {if (data.items) {if (startItem > 1) {setLastItem(startItem + (data.items.length - 1))} else {setLastItem(data.items.length)}}}, [data])return (<section className="content"><div className="container-fluid"><div className="row"><div className="col-12"><div className="card"><div className="card-body"><div className="dataTables_wrapper dt-bootstrap4 no-footer"><div className="row justify-content-between align-items-center"><div className="col-sm-12 col-md-6"><div className="dataTables_length" id="gridTable_length"><label className='d-inline-flex'>{labels.SHOW}<selectclassName="custom-select mx-1 custom-select-sm form-control form-control-sm"onChange={(e) => setDataLength(e.target.value)}>{lengthValues.map((value, index) => (<option key={index} value={value}>{value}</option>))}</select>{labels.REGISTER}</label></div></div><div className="col-sm-12 col-md-6 d-flex justify-content-end"><div className="dataTables_filter"><label>{labels.SEARCH}<inputtype="search"className="form-control form-control-sm" placeholder=""onChange={(e) => setSearch(e.target.value)}/></label></div></div></div><div className="row"><div className="col-sm-12 table-responsive">{data.items&&<Tabledata={data.items}onEdit={onEdit}onDelete={onDelete}headers={headers}allowEdit={allowEdit}allowDelete={allowDelete}allowUsersWhoApplied={allowUsersWhoApplied}handleUserWhoApplied={handleUserWhoApplied}labels={labels}/>}</div></div><div className="row"><div className="col-sm-12 col-md-5"><div className="dataTables_info" >{data.items&&labels.DATATABLE_SINFO.replace('_START_', startItem).replace('_END_', lastItem).replace('_TOTAL_', data.total)}</div></div><div className="col-sm-12 col-md-7"><div className='d-flex align-items-center justify-content-end'>{pages.last > 1&&<PaginationComponentpages={pages.last}currentActivePage={pages.current}onChangePage={(page) => setPages({ ...pages, current: page })}/>}</div></div></div></div></div><div className="card-footer clearfix"><div style={{display: 'flex',justifyContent: 'flex-end',gap: '10px'}}><buttontype="button"className="btn btn-info"onClick={() => getData()}><i className="fa fa-refresh" />{labels.REFRESH}</button>{(allowAdd === '1')&&<buttontype="button"className="btn btn-primary btn-add"onClick={onAdd}><i className="fa fa-plus" />{labels.ADD}</button>}</div></div></div></div></div></div></section>)}export default TableFilters