import React, { useState } from 'react'; import { Table, TableHeader, TableBody, cellWidth, } from '@patternfly/react-table'; import { Button, Toolbar, ToolbarGroup, ToolbarContent, ToolbarItem, Checkbox, } from '@patternfly/react-core'; import Pagination from 'foremanReact/components/Pagination'; import { translate as __ } from 'foremanReact/common/I18n'; import PropTypes from 'prop-types'; import { DEFAULT_PER_PAGE } from './AnsibleRolesAndVariablesConstants'; import './AnsibleRolesAndVariables.scss'; const ImportRolesAndVariablesTable = ({ columnsData, rowsData, proxy, onSubmit, onCancel, isImporting, }) => { const columns = columnsData.map(col => ({ ...col, transforms: [cellWidth(10)], })); const [rows, setRows] = useState(rowsData); const [isChecked, setIsChecked] = useState(false); const [selectedRowsCount, setSelectRowsCount] = useState(0); const [pagination, setPagination] = useState({ page: 1, per_page: DEFAULT_PER_PAGE, }); const [paginatedRows, setPaginatedRows] = useState( rows.slice(0, pagination.per_page) ); const onSelect = (event, isSelected, rowId, row) => { const selectableRowLength = rows.filter( tempRow => tempRow.parent === undefined ).length; let rowsCount = selectedRowsCount; const tempRows = rows.map(tempRow => { if (rowId === -1) { tempRow.selected = isSelected; setIsChecked(isSelected); setSelectRowsCount(isSelected ? selectableRowLength : 0); } else if (tempRow.id === row.id) { tempRow.selected = isSelected; rowsCount = isSelected ? selectedRowsCount + 1 : selectedRowsCount - 1; if (rowsCount > 0 && rowsCount === selectableRowLength) { setIsChecked(true); } else { setIsChecked(false); } setSelectRowsCount(rowsCount); } return tempRow; }); setRows(tempRows); }; const SelectAll = checked => { onSelect(null, checked, -1); }; const handleSetPage = args => { const startIdx = (args.page - 1) * args.per_page; const endIdx = rows.length < args.page * args.per_page ? rows.length : args.page * args.per_page; setPagination(args); setPaginatedRows(rows.slice(startIdx, endIdx)); }; const renderPagination = () => ( handleSetPage(args)} /> ); const renderSelectAll = () => ( ); const renderSubmitAndCancel = () => (


); return (
{renderSelectAll()}
{renderPagination()} {renderSubmitAndCancel()}
); }; ImportRolesAndVariablesTable.defaultProps = { columnsData: undefined, rowsData: [], proxy: undefined, onSubmit: undefined, onCancel: undefined, isImporting: false, }; ImportRolesAndVariablesTable.propTypes = { columnsData: PropTypes.array, rowsData: PropTypes.array, proxy: PropTypes.number, onSubmit: PropTypes.func, onCancel: PropTypes.func, isImporting: PropTypes.bool, }; export default ImportRolesAndVariablesTable;