import React, { useState, useEffect } from 'react';
import { sortBy } from 'lodash';
import {Tag} from "@kube-design/components";
import useDeleteNodeFormContext from "../../../../hooks/useDeleteNodeFormContext";
const DeleteNodeTableDataWrapper= ({ children }) => {
const {curCluster, setCurSelectedNodeName} = useDeleteNodeFormContext();
const [initialData,setInitialData] = useState([])
const [initialColumns,setInitialColumns]=useState([])
useEffect(()=>{
if(Object.keys(curCluster).length > 0) {
setInitialData(curCluster.spec.hosts)
setInitialColumns([
{
children: [
{title: 'Name', dataIndex: 'name', sorter: true, search: true},
{title: 'Address', dataIndex: 'address', width: '15%'},
{title: 'InternalAddress', dataIndex: 'internalAddress', width: '15%'},
{
title: '角色',
dataIndex: 'role',
width: '20%',
search: true,
render: roleColumn
},
],
},
])
}
},[curCluster])
useEffect(()=>{
setCurSelectedNodeName('')
},[])
useEffect(() => {
if(initialData.length>0){
fetchList();
}
}, [initialData]);
const [list, setList] = useState({
data: [],
isLoading: false,
selectedRowKeys: [],
filters: {},
sorter: {},
pagination: { page: 1, total: 0, limit: 10 },
});
const roleColumn = (_,record) => {
return(
{curCluster.spec.roleGroups.master.includes(record.name) &&
MASTER}
{curCluster.spec.roleGroups.master.includes(record.name) &&
}
{curCluster.spec.roleGroups.worker.includes(record.name) && WORKER}
)
}
const setSelectedRowKeys = (value) => {
setList((prevState) => ({ ...prevState, selectedRowKeys: value }));
setCurSelectedNodeName(value.length>0?value[0]:'')
};
//
const fetchList = ({ name, pagination = {}, filters = {}, sorter = {} } = {}) => {
setList((prevState) => ({ ...prevState, isLoading: true }));
setTimeout(() => {
let data = [...initialData];
if (name) {
data = data.filter((item) => item.name.indexOf(name) !== -1);
}
const filterKeys = Object.keys(filters);
if (filterKeys.length > 0) {
data = data.filter((item) =>
filterKeys.every((key) => filters[key] === item[key])
);
}
if (sorter.field && sorter.order) {
data = sortBy(data, [sorter.field]);
if (sorter.order === 'descend') {
data = data.reverse();
}
}
const total = data.length;
const { page = 1, limit = 10 } = pagination;
data = data.slice((page - 1) * limit, page * limit);
setList({
data,
filters,
sorter,
pagination: { total, page, limit },
isLoading: false,
selectedRowKeys: [],
});
}, 300);
};
//
return (
{children({
list,
columns: initialColumns,
fetchList,
setSelectedRowKeys,
})}
);
}
export default DeleteNodeTableDataWrapper;