package com.ruoyi.flowable.flow;



import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;

import java.util.List;

/**
 *
 */
public class VFormUtils {
    /**
     * 处理 VForm 中嵌套在 grid-col 下的所有标签，设置为 disabled
     * @param oldFields 表单组件列表
     */
    public static void disableGridColFields(JSONArray oldFields) {
        processWidgetList(oldFields);
        System.out.print(oldFields);
    }

    // 递归处理 JSONArray（关键修改点：参数类型改为 JSONArray）
    private static void processWidgetList(JSONArray widgetList) {
        if (widgetList == null) return;

        for (Object obj : widgetList) {
            if (obj instanceof JSONObject) {
                JSONObject widget = (JSONObject) obj;
                String type = widget.getString("type");

                if ("grid".equals(type)) {
                    JSONArray cols = widget.getJSONArray("cols");
                    processWidgetList(cols);
                } else if ("grid-col".equals(type)) {
                    JSONArray innerWidgets = widget.getJSONArray("widgetList");
                    processWidgetList(innerWidgets);
                } else if ("input".equals(type) || "select".equals(type)) {
                    setDisabled(widget);
                }
            }
        }
    }

    private static void setDisabled(JSONObject component) {
        JSONObject options = component.getJSONObject("options");
        if (options == null) {
            options = new JSONObject();
            component.put("options", options);
        }
        options.put("disabled", true);
    }
}
