// // Copyright (C) Stanislaw Adaszewski, 2020 // Contact: s.adaszewski@gmail.com // Website: https://adared.ch/wba // License: GNU Affero General Public License, Version 3 // import { h, Component } from 'preact'; import WBPagination from 'wb-pagination'; import makeArvadosRequest from 'make-arvados-request'; import urlForObject from 'url-for-object'; class WBUserListing extends Component { componentDidMount() { this.preparePage(); } componentWillReceiveProps(nextProps) { this.props = nextProps; this.preparePage(); } preparePage() { const { arvHost, arvToken } = this.props.app.state; const { itemsPerPage, page, textSearch } = this.props; const order = ['last_name asc']; const filters = []; if (textSearch) filters.push([ 'any', 'ilike', '%' + textSearch + '%' ]); let prom = makeArvadosRequest(arvHost, arvToken, '/arvados/v1/users?order=' + encodeURIComponent(JSON.stringify(order)) + '&filters=' + encodeURIComponent(JSON.stringify(filters)) + '&limit=' + itemsPerPage + '&offset=' + (itemsPerPage * page)); prom = prom.then(xhr => { this.setState({ 'items': xhr.response['items'], 'numPages': Math.ceil(xhr.response['items_available'] / itemsPerPage) }); }); } render({ app, page, getPageUrl }, { items, numPages }) { return (

Users

{ items ? items.map(it => ( )) : 'Loading...' }
); } } WBUserListing.defaultProps = { 'itemsPerPage': 20, 'page': 0 }; export default WBUserListing;