import { Select } from 'antd';
import { get } from 'lodash';

import React, { useState } from 'react';

const { Option } = Select;
const useNodeSelect = (defaultNode) => {
  const [node, setNode] = useState(defaultNode);
  const [nodes, setNodes] = useState([]);

  const handleNodeChange = (e) => {
    const key = getKey();
    setNode(nodes.find((i) => i.metric[key] === e));
  };

  const Nodes = () => {
    if (!nodes.length) {
      return null;
    }
    const key = getKey();
    return (
      <div style={{ marginBottom: 16 }}>
        <span style={{ color: 'black', fontSize: 14, fontWeight: 400 }}>
          Node:{' '}
        </span>
        <Select
          value={node.metric[key]}
          onChange={handleNodeChange}
          style={{ minWidth: 150 }}
        >
          {nodes.map((item) => (
            <Option key={item.metric[key]} value={item.metric[key]}>
              {item.metric[key]}
            </Option>
          ))}
        </Select>
      </div>
    );
  };

  return [node, Nodes, setNode, setNodes];

  function getKey() {
    const hostname = get(node, 'metric.hostname', false);
    let key = 'instance';
    if (hostname) {
      key = 'hostname';
    }
    return key;
  }
};

export default useNodeSelect;