0

我为 Jquery Querybuilder 创建了一个自定义插件,但它仅在我从文件 querybuilder-standalone 本身编辑规则结构时才有效。

我创建的插件添加了一个按钮,就像每个规则中的插件 not-group 中的按钮一样。这个插件的功能是把像这样的'field = "value"'这样的输入转换成这个'UPPER(field) = "VALUE"'。这个解决方案的问题是,为了重用这个查询,我需要在查询构建器中修改规则本身的结构。我需要进行的编辑如下:

您可以在文件 query-builder.standalone.js 的第 2242 行找到原始代码

if (model.filter) {
    model.filter.to_upper = item.to_upper; /* <---This is the line I added myself */
    model.operator = self.getOperatorByType(item.operator, !options.allow_invalid);
    if (!model.operator) {
       model.operator = self.getOperators(model.filter)[0];
    }
}

和这个:

第 6215 和 6232 行之间的原始代码

var id = self.getSQLFieldID(field, value);
//The following line us the code I need
var to_upper = data.to_upper;
/**
* Modifies the rule generated from the SQL expression
* @event changer:sqlToRule
* @memberof module:plugins.SqlSupport
* @param {object} rule
* @param {object} AST
* @returns {object}
*/
var rule = self.change('sqlToRule', {
   id: id,
   field: field,
   operator: opVal.op,
   value: opVal.val,
   //The following line us the code I need
   to_upper: to_upper
}, data);

'to_upper' 是我默认设置为 false 的属性,并在单击其相关按钮时设置为 true。

如果不将这些代码添加到查询构建器本身,我怎么能做到这一点?

4

1 回答 1

0

在这里,您可以找到有关我的问题的更多详细信息以及我从该 UI 组件的创建者那里收到的有用答案。 https://github.com/mistic100/jQuery-QueryBuilder/issues/931

于 2021-10-22T06:46:38.047 回答