0.1.3 • Published 2 years ago

react-expression-editor v0.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

安装

npm install react-expression-editor -S -D

使用方法

    import { ExpressionEditor, Formula, Expression } from 'react-expression-editor';
    import 'react-expression-editor/dist/index.css';

ExpressionEditor API

参数说明类型默认值可选值
single是否为单个公式Booleantruetrue 或 false
dataSource数据源Objectnull-
mode简易模式或复杂模式String"base""base" 或 "advanced"
singleProperty单个公式操作的属性对象(property)Objectnull-
baseFormula单个简易公式String""-
advancedFormula单个复杂公式Object<Formula>null-
baseFormulaQueue简易公式的队列Array<Object>[]-
advancedFormulaQueue复杂公式的队列Array<Formula>[]-
onBaseFormulaChange单个简易公式变化的回调函数function(Object _singleProperty, String baseFormula)()=>{}-
onBaseFormulaQueueChange简易公式的队列变化的回调函数function(Array<Object> _baseFormulaQueue)()=>{}-
onAdvancedFormulaChange单个复杂公式变化的回调函数function(Object singleProperty, Formula _advancedFormula)()=>{})-
onAdvancedFormulaQueueChange复杂公式的队列变化的回调函数function(Array<Formula> _advancedFormulaQueue)()=>{})-
onModeChange简易/复杂模式改变的回调函数function(String _mode)()=>{})-

dataSource的数据结构

    dataSource: {
        data: { // 存放的某类指标的数据
            box: {
                width: 100,
                height: 100,
            },
        },
        dataMapping: { // 存放的某类指标的名称映射
            box: "盒子"
        },
        propertyMapping: { // data存放的某类指标中的属性的名称映射
            width: "宽度",
            height: "高度"
        }
    }

property的数据结构

    property: {
        dataSourceIndex: "box",// 某类指标的KEY
        propertyName: "width",// 某类指标中属性的KEY
    }

Formula类

    // 初始化一个formula对象
    const formula = new Formula(property, dataSource);
    /*
       计算公式的值
       @return {Object} property 计算结果
    */
    formula.getResult();
    // 注:若为单个高级公式 需要先把property设置到formula中
    // 序列化一个formula对象成json
    formula.formatToJson();
    Formula.build(json, dataSource) 把json反序列化一个formula对象

Expression类

    /*
       计算一个简易公式的值
       @param {String} formula 简易公式
       @param {Object} dataSource 数据源
       @return Number
    */
    Expression.getBaseResult(baseFormula, dataSource);