package view;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.AnchorPane;
import model.DataManager;
import model.Goods;

public class CategoryManagementView extends AnchorPane {

    private TreeView<String> categoryTreeView;

    public CategoryManagementView() {
        initializeComponents();
        loadCategoriesAndGoods();
    }

    private void initializeComponents() {
        categoryTreeView = new TreeView<>();
        categoryTreeView.setShowRoot(false); // 不显示根节点
        AnchorPane.setTopAnchor(categoryTreeView, 10.0);
        AnchorPane.setRightAnchor(categoryTreeView, 10.0);
        AnchorPane.setBottomAnchor(categoryTreeView, 10.0);
        AnchorPane.setLeftAnchor(categoryTreeView, 10.0);
        this.getChildren().add(categoryTreeView);
    }

    private void loadCategoriesAndGoods() {
        DataManager dataManager = DataManager.getInstance();
        ObservableList<Goods> allGoods = FXCollections.observableArrayList(dataManager.getAllGoods());

        // 获取所有分类
        ObservableList<String> categories = FXCollections.observableArrayList(allGoods.stream()
                .map(Goods::getCategory)
                .distinct()
                .toArray(String[]::new));

        // 构建树结构
        TreeItem<String> root = new TreeItem<>();
        for (String category : categories) {
            TreeItem<String> categoryItem = new TreeItem<>(category);
            for (Goods goods : allGoods) {
                if (goods.getCategory().equals(category)) {
                    TreeItem<String> goodsItem = new TreeItem<>(goods.getName() + " (" + goods.getSpecification() + ")");
                    categoryItem.getChildren().add(goodsItem);
                }
            }
            root.getChildren().add(categoryItem);
        }

        categoryTreeView.setRoot(root);
    }

}
