// GasFlux前端配置下拉选项集成示例 // 使用方法:将 frontend_config_options.json 加载到前端应用中 // 示例:React组件集成 import React, { useState, useEffect } from 'react'; import configOptions from './frontend_config_options.json'; const GasFluxConfigForm = () => { const [config, setConfig] = useState({}); const [configOptionsData, setConfigOptionsData] = useState(null); useEffect(() => { // 加载配置选项 setConfigOptionsData(configOptions); }, []); const handleSelectChange = (categoryId, optionKey, value) => { setConfig(prev => ({ ...prev, [categoryId]: { ...prev[categoryId], [optionKey]: value } })); // 应用空间模式默认值 if (categoryId === 'strategies' && optionKey === 'spatial') { applySpatialModeDefaults(value); } }; const applySpatialModeDefaults = (spatialMode) => { const defaults = configOptionsData?.validation?.spatial_mode_defaults?.[spatialMode]; if (defaults) { setConfig(prev => ({ ...prev, semivariogram_settings: { ...prev.semivariogram_settings, ...defaults.semivariogram_settings }, ordinary_kriging_settings: { ...prev.ordinary_kriging_settings, ...defaults.ordinary_kriging_settings } })); } }; const renderSelect = (category, option) => { const currentValue = config[category.id]?.[option.key] || option.default; return (
{option.description} ({option.descriptionEn})
{option.options.find(opt => opt.value === currentValue)?.description && (
{option.options.find(opt => opt.value === currentValue).description}
)}
); }; const renderBoolean = (category, option) => { const currentValue = config[category.id]?.[option.key] ?? option.default; return (
{option.options.map(opt => ( ))}
); }; if (!configOptionsData) { return
加载配置选项中...
; } return (

GasFlux 配置设置

{configOptionsData.categories.map(category => (

{category.name} ({category.nameEn})

{category.description}

{category.options.map(option => { if (option.type === 'select') { return renderSelect(category, option); } else if (option.type === 'boolean') { return renderBoolean(category, option); } return null; })}
))}

当前配置预览

{JSON.stringify(config, null, 2)}
); }; export default GasFluxConfigForm; // CSS样式示例 const styles = ` .gasflux-config-form { max-width: 800px; margin: 0 auto; padding: 20px; } .config-category { margin-bottom: 30px; padding: 20px; border: 1px solid #ddd; border-radius: 8px; } .config-option { margin-bottom: 20px; } .config-option label { display: block; font-weight: bold; margin-bottom: 8px; } .config-option select { width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; } .boolean-options { display: flex; gap: 20px; } .radio-label { display: flex; flex-direction: column; cursor: pointer; } .option-description, .value-description { margin-top: 5px; font-size: 0.9em; color: #666; } .required { color: red; } .config-preview { margin-top: 30px; padding: 20px; background: #f5f5f5; border-radius: 8px; } .config-preview pre { white-space: pre-wrap; word-wrap: break-word; } .save-config-btn { background: #007bff; color: white; padding: 12px 24px; border: none; border-radius: 6px; cursor: pointer; font-size: 16px; } .save-config-btn:hover { background: #0056b3; } `; // 使用说明: // 1. 将 frontend_config_options.json 放在项目中 // 2. 在React组件中导入并使用 // 3. 根据需要调整样式和布局 // 4. 添加表单验证逻辑 // 5. 实现配置保存和加载功能