@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
765 lines (758 loc) • 25.7 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.UPPER = exports.TRUNCATE_DATETIME = exports.TODAY = exports.START_OF_TODAY = exports.RELATIVE_DATETIME = exports.RELATIVE_DATE = exports.NOW = exports.LOWER = exports.LINEAR_REGRESSION = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
//import { customJsonLogicOperations } from "../utils/jsonLogic";
// Tip: search for `customJsonLogicOperations` in codebase to see custom JL funcs we use in `jsonLogicCustomOps`
var dateDimListValues = {
day: "day",
week: "week",
month: "month",
year: "year"
};
var dateDimDefault = "day";
var datetimeDimListValues = _objectSpread({
hour: "hour",
minute: "minute",
second: "second"
}, dateDimListValues);
var datetimeDimDefault = "day";
var NOW = exports.NOW = {
label: "Now",
returnType: "datetime",
jsonLogicCustomOps: {
now: {}
},
// jsonLogic: "now",
jsonLogic: function jsonLogic() {
return {
now: []
};
},
jsonLogicImport: function jsonLogicImport(v) {
if (v["now"]) {
return [];
}
},
//spelFunc: "new java.util.Date()",
spelFunc: "T(java.time.LocalDateTime).now()",
sqlFormatFunc: function sqlFormatFunc() {
return "NOW()";
},
sqlFunc: "NOW",
mongoFormatFunc: function mongoFormatFunc() {
return {
"$toDate": "$$NOW"
};
// return {
// "$dateFromString": {
// "dateString": this.utils.moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
// "format": "%Y-%m-%d %H:%M:%S"
// }
// };
},
formatFunc: function formatFunc() {
return "NOW";
}
};
// todo: add option like `resolveWithValueOnExport: false` for NOW, TODAY, START_OF_TODAY (issue #1234) ???
var TODAY = exports.TODAY = {
label: "Today",
returnType: "date",
//jsonLogic: "today",
jsonLogicCustomOps: {
today: {}
},
jsonLogic: function jsonLogic() {
return {
today: []
};
},
jsonLogicImport: function jsonLogicImport(v) {
if (v["today"]) {
return [];
}
},
spelFunc: "T(java.time.LocalDate).now()",
sqlFormatFunc: function sqlFormatFunc() {
return "CURDATE()";
},
sqlFunc: "CURDATE",
mongoFormatFunc: function mongoFormatFunc() {
return {
"$dateTrunc": {
// or "date": "$$NOW",
"date": {
"$toDate": "$$NOW"
},
"unit": "day"
}
};
// return {
// "$dateFromString": {
// "dateString": this.utils.moment(new Date()).format("YYYY-MM-DD"),
// "format": "%Y-%m-%d"
// }
// };
},
formatFunc: function formatFunc() {
return "TODAY";
}
};
var START_OF_TODAY = exports.START_OF_TODAY = {
label: "Start of today",
returnType: "datetime",
jsonLogicCustomOps: {
start_of_today: {}
},
// jsonLogic: "start_of_today",
jsonLogic: function jsonLogic() {
return {
start_of_today: []
};
},
jsonLogicImport: function jsonLogicImport(v) {
if (v["start_of_today"]) {
return [];
}
},
spelFunc: "T(java.time.LocalDateTime).now().truncatedTo(T(java.time.temporal.ChronoUnit).DAYS)",
spelImport: function spelImport(spel) {
var _obj$obj, _oneArg$children, _oneArg$children2, _oneArgType$cls;
// spel = {
// "type": "!func",
// "methodName": "truncatedTo",
// "args": [
// {
// "type": "compound",
// "children": [
// { "type": "!type", "cls": [ "java", "time", "temporal", "ChronoUnit" ] },
// { "type": "property", "val": "DAYS" }
// ]
// }
// ],
// "obj": {
// "type": "!func",
// "methodName": "now",
// "obj": {
// "type": "!type",
// "cls": [ "java", "time", "LocalDateTime" ]
// }
// }
// }
var obj = spel.obj,
args = spel.args;
var isTruncate = (spel === null || spel === void 0 ? void 0 : spel.type) === "!func" && (spel === null || spel === void 0 ? void 0 : spel.methodName) === "truncatedTo";
var isObjNow = (obj === null || obj === void 0 ? void 0 : obj.methodName) === "now" && (obj === null || obj === void 0 || (_obj$obj = obj.obj) === null || _obj$obj === void 0 || (_obj$obj = _obj$obj.cls) === null || _obj$obj === void 0 ? void 0 : _obj$obj.join(".")) === "java.time.LocalDateTime";
var argsLength = (args === null || args === void 0 ? void 0 : args.length) || 0;
var oneArg = args === null || args === void 0 ? void 0 : args[0];
var oneArgType = oneArg === null || oneArg === void 0 || (_oneArg$children = oneArg.children) === null || _oneArg$children === void 0 ? void 0 : _oneArg$children[0];
var oneArgProperty = oneArg === null || oneArg === void 0 || (_oneArg$children2 = oneArg.children) === null || _oneArg$children2 === void 0 ? void 0 : _oneArg$children2[1];
var oneArgCls = (oneArgType === null || oneArgType === void 0 ? void 0 : oneArgType.type) === "!type" && (oneArgType === null || oneArgType === void 0 || (_oneArgType$cls = oneArgType.cls) === null || _oneArgType$cls === void 0 ? void 0 : _oneArgType$cls.join("."));
var oneArgConst = (oneArgProperty === null || oneArgProperty === void 0 ? void 0 : oneArgProperty.type) === "property" && (oneArgProperty === null || oneArgProperty === void 0 ? void 0 : oneArgProperty.val);
var isArgDays = argsLength === 1 && oneArg.type === "compound" && oneArgCls === "java.time.temporal.ChronoUnit" && oneArgConst === "DAYS";
if (isObjNow && isTruncate && isArgDays) {
return {};
}
},
sqlFormatFunc: function sqlFormatFunc() {
return "DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00')";
},
sqlImport: function sqlImport(sqlObj, _, sqlDialect) {
var _sqlObj$children;
if ((sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) === "DATE_FORMAT" && ((_sqlObj$children = sqlObj.children) === null || _sqlObj$children === void 0 ? void 0 : _sqlObj$children.length) === 2) {
var _sqlObj$children2 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
date = _sqlObj$children2[0],
format = _sqlObj$children2[1];
if ((format === null || format === void 0 ? void 0 : format.value) == "%Y-%m-%d 00:00:00" && (date === null || date === void 0 ? void 0 : date.func) == "NOW") {
return {
args: {}
};
}
}
},
mongoFormatFunc: function mongoFormatFunc() {
return {
"$dateTrunc": {
"date": {
"$toDate": "$$NOW"
},
"unit": "day"
}
};
// return {
// "$dateFromString": {
// "dateString": this.utils.moment(new Date()).format("YYYY-MM-DD"),
// "format": "%Y-%m-%d"
// }
// };
},
formatFunc: function formatFunc() {
return "START_OF_TODAY";
}
};
var TRUNCATE_DATETIME = exports.TRUNCATE_DATETIME = {
label: "Truncate",
returnType: "datetime",
renderBrackets: ["", ""],
renderSeps: ["to"],
jsonLogicCustomOps: {
datetime_truncate: {}
},
jsonLogic: function jsonLogic(_ref) {
var date = _ref.date,
dim = _ref.dim;
return {
"datetime_truncate": [date, dim]
};
},
jsonLogicImport: function jsonLogicImport(v) {
if (v["datetime_truncate"]) {
var date = v["datetime_truncate"][0];
var dim = v["datetime_truncate"][1];
return [date, dim];
}
},
spelFormatFunc: function spelFormatFunc(_ref2) {
var date = _ref2.date,
dim = _ref2.dim;
var dimPluralUppercase = (dim.charAt(0).toUpperCase() + dim.slice(1) + "s").toUpperCase();
return "".concat(date, ".truncatedTo(T(java.time.temporal.ChronoUnit).").concat(dimPluralUppercase, ")");
},
spelImport: function spelImport(spel) {
var _oneArg$children3, _oneArg$children4, _oneArgType$cls2;
// spel = {
// "type": "!func",
// "methodName": "truncatedTo",
// "args": [
// {
// "type": "compound",
// "children": [
// { "type": "!type", "cls": [ "java", "time", "temporal", "ChronoUnit" ] },
// { "type": "property", "val": "DAYS" }
// ]
// }
// ],
// }
var args = spel.args;
var isTruncate = (spel === null || spel === void 0 ? void 0 : spel.type) === "!func" && (spel === null || spel === void 0 ? void 0 : spel.methodName) === "truncatedTo";
var argsLength = (args === null || args === void 0 ? void 0 : args.length) || 0;
var oneArg = args === null || args === void 0 ? void 0 : args[0];
var oneArgType = oneArg === null || oneArg === void 0 || (_oneArg$children3 = oneArg.children) === null || _oneArg$children3 === void 0 ? void 0 : _oneArg$children3[0];
var oneArgProperty = oneArg === null || oneArg === void 0 || (_oneArg$children4 = oneArg.children) === null || _oneArg$children4 === void 0 ? void 0 : _oneArg$children4[1];
var oneArgCls = (oneArgType === null || oneArgType === void 0 ? void 0 : oneArgType.type) === "!type" && (oneArgType === null || oneArgType === void 0 || (_oneArgType$cls2 = oneArgType.cls) === null || _oneArgType$cls2 === void 0 ? void 0 : _oneArgType$cls2.join("."));
var oneArgConst = (oneArgProperty === null || oneArgProperty === void 0 ? void 0 : oneArgProperty.type) === "property" && (oneArgProperty === null || oneArgProperty === void 0 ? void 0 : oneArgProperty.val);
var isArgDays = argsLength === 1 && oneArg.type === "compound" && oneArgCls === "java.time.temporal.ChronoUnit" && oneArgConst;
var dim = oneArgConst.toLowerCase().substring(0, oneArgConst.length - 1);
if (isTruncate && isArgDays) {
return {
date: spel.obj,
dim: {
type: "string",
val: dim
}
};
}
},
// MySQL
sqlFormatFunc: function sqlFormatFunc(_ref3, sqlDialect) {
var date = _ref3.date,
dim = _ref3.dim;
if (!sqlDialect || sqlDialect === "MySQL") {
dim = dim.replace(/^'|'$/g, "");
switch (dim) {
case "second":
return "DATE_FORMAT(".concat(date, ", '%Y-%m-%d %H:%i:%s')");
case "minute":
return "DATE_FORMAT(".concat(date, ", '%Y-%m-%d %H:%i:00')");
case "hour":
return "DATE_FORMAT(".concat(date, ", '%Y-%m-%d %H:00:00')");
case "day":
return "DATE_FORMAT(".concat(date, ", '%Y-%m-%d 00:00:00')");
case "week":
return "DATE_SUB(DATE_FORMAT(".concat(date, ", '%Y-%m-%d 00:00:00'), INTERVAL WEEKDAY(").concat(date, ") DAY)");
case "month":
return "DATE_FORMAT(".concat(date, ", '%Y-%m-01 00:00:00')");
case "year":
return "DATE_FORMAT(".concat(date, ", '%Y-01-01 00:00:00')");
}
} else if (sqlDialect === "PostgreSQL") {
return "date_trunc(".concat(dim, ", ").concat(date, ")");
}
},
sqlImport: function sqlImport(sqlObj, _, sqlDialect) {
if (!sqlDialect || sqlDialect === "MySQL") {
var _sqlObj$children3, _sqlObj$children5;
if ((sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) === "DATE_FORMAT" && ((_sqlObj$children3 = sqlObj.children) === null || _sqlObj$children3 === void 0 ? void 0 : _sqlObj$children3.length) === 2) {
var _sqlObj$children4 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
date = _sqlObj$children4[0],
format = _sqlObj$children4[1];
var dim;
switch (format === null || format === void 0 ? void 0 : format.value) {
case "%Y-%m-%d %H:%i:%s":
dim = "second";
break;
case "%Y-%m-%d %H:%i:00":
dim = "minute";
break;
case "%Y-%m-%d %H:00:00":
dim = "hour";
break;
case "%Y-%m-%d 00:00:00":
dim = "day";
break;
case "%Y-%m-01 00:00:00":
dim = "month";
break;
case "%Y-01-01 00:00:00":
dim = "year";
}
if (dim) {
return {
args: {
date: date,
dim: dim
}
};
}
} else if ((sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) === "DATE_SUB" && ((_sqlObj$children5 = sqlObj.children) === null || _sqlObj$children5 === void 0 ? void 0 : _sqlObj$children5.length) === 2) {
var _dateFormat$children;
var _sqlObj$children6 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
dateFormat = _sqlObj$children6[0],
interval = _sqlObj$children6[1];
var isFormat = (dateFormat === null || dateFormat === void 0 ? void 0 : dateFormat.func) === "DATE_FORMAT" && ((_dateFormat$children = dateFormat.children) === null || _dateFormat$children === void 0 ? void 0 : _dateFormat$children.length) === 2;
var isIntervalDay = interval._type == "interval" && interval.unit === "day";
if (isFormat && isIntervalDay) {
var _dateFormat$children2 = (0, _slicedToArray2["default"])(dateFormat.children, 2),
_date = _dateFormat$children2[0],
_format = _dateFormat$children2[1];
if ((_format === null || _format === void 0 ? void 0 : _format.value) === "%Y-%m-%d 00:00:00") {
return {
args: {
date: _date,
dim: "week"
}
};
}
}
}
return undefined;
} else if (sqlDialect === "PostgreSQL") {
var _sqlObj$children7;
if ((sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) === "date_trunc" && ((_sqlObj$children7 = sqlObj.children) === null || _sqlObj$children7 === void 0 ? void 0 : _sqlObj$children7.length) === 2) {
var _sqlObj$children8 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
_dim = _sqlObj$children8[0],
_date2 = _sqlObj$children8[1];
return {
args: {
date: _date2,
dim: _dim.value
}
};
}
}
},
mongoFormatFunc: function mongoFormatFunc(_ref4) {
var date = _ref4.date,
dim = _ref4.dim;
return {
"$dateTrunc": {
"date": date,
"unit": dim
}
};
},
formatFunc: function formatFunc(_ref5) {
var date = _ref5.date,
dim = _ref5.dim;
return "TRUNCATE ".concat(date, " TO ").concat(dim);
},
args: {
date: {
label: "Datetime",
type: "datetime",
defaultValue: {
func: "NOW",
args: []
},
valueSources: ["value", "field", "func"],
escapeForFormat: true
},
dim: {
label: "Dimension",
type: "select",
defaultValue: datetimeDimDefault,
valueSources: ["value"],
mainWidgetProps: {
customProps: {
showSearch: false
}
},
fieldSettings: {
listValues: datetimeDimListValues
},
escapeForFormat: false
}
}
};
var RELATIVE_DATETIME = exports.RELATIVE_DATETIME = {
label: "Relative",
returnType: "datetime",
renderBrackets: ["", ""],
renderSeps: ["", "", ""],
spelFormatFunc: function spelFormatFunc(_ref6) {
var date = _ref6.date,
op = _ref6.op,
val = _ref6.val,
dim = _ref6.dim;
var dimPlural = dim.charAt(0).toUpperCase() + dim.slice(1) + "s";
var method = op + dimPlural;
return "".concat(date, ".").concat(method, "(").concat(val, ")");
},
spelImport: function spelImport(spel) {
var _spel$methodName;
var date, op, val, dim;
var matchRes = (_spel$methodName = spel.methodName) === null || _spel$methodName === void 0 ? void 0 : _spel$methodName.match(/^(minus|plus)(\w+)s$/);
if (matchRes) {
dim = matchRes[2].toLowerCase();
op = matchRes[1];
if (["minus", "plus"].includes(op)) {
if (Object.keys(datetimeDimListValues).includes(dim)) {
op = {
type: "string",
val: op
};
dim = {
type: "string",
val: dim
};
val = spel.args[0];
date = spel.obj;
return {
date: date,
op: op,
val: val,
dim: dim
};
}
}
}
},
jsonLogic: function jsonLogic(_ref7) {
var date = _ref7.date,
op = _ref7.op,
val = _ref7.val,
dim = _ref7.dim;
return {
"datetime_add": [date, val * (op == "minus" ? -1 : +1), dim]
};
},
jsonLogicImport: function jsonLogicImport(v) {
if (v["datetime_add"]) {
var date = v["datetime_add"][0];
var val = Math.abs(v["datetime_add"][1]);
var op = v["datetime_add"][1] >= 0 ? "plus" : "minus";
var dim = v["datetime_add"][2];
return [date, op, val, dim];
}
},
jsonLogicCustomOps: {
datetime_add: {}
},
// MySQL
//todo: other SQL dialects?
sqlFormatFunc: function sqlFormatFunc(_ref8) {
var date = _ref8.date,
op = _ref8.op,
val = _ref8.val,
dim = _ref8.dim;
return "DATE_ADD(".concat(date, ", INTERVAL ").concat(parseInt(val) * (op == "minus" ? -1 : +1), " ").concat(dim.replace(/^'|'$/g, ""), ")");
},
sqlImport: function sqlImport(sqlObj, _, sqlDialect) {
var _sqlObj$children9;
if (["DATE_ADD", "DATE_SUB"].includes(sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) && ((_sqlObj$children9 = sqlObj.children) === null || _sqlObj$children9 === void 0 ? void 0 : _sqlObj$children9.length) === 2) {
var _sqlObj$children10 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
date = _sqlObj$children10[0],
interval = _sqlObj$children10[1];
if (interval._type == "interval") {
return {
args: {
date: date,
op: (sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.func) === "DATE_ADD" ? "plus" : "minus",
val: interval.value,
dim: interval.unit
}
};
}
}
},
mongoFormatFunc: function mongoFormatFunc(_ref9) {
var date = _ref9.date,
op = _ref9.op,
val = _ref9.val,
dim = _ref9.dim;
return {
"$dateAdd": {
"startDate": date,
"unit": dim,
"amount": val * (op == "minus" ? -1 : +1)
}
};
},
formatFunc: function formatFunc(_ref10) {
var date = _ref10.date,
op = _ref10.op,
val = _ref10.val,
dim = _ref10.dim;
return !val ? date : "".concat(date, " ").concat(op == "minus" ? "-" : "+", " ").concat(val, " ").concat(dim);
},
args: {
date: {
label: "Datetime",
type: "datetime",
defaultValue: {
func: "NOW",
args: []
},
valueSources: ["value", "field", "func"],
escapeForFormat: true
},
op: {
label: "Op",
type: "select",
defaultValue: "plus",
valueSources: ["value"],
mainWidgetProps: {
customProps: {
showSearch: false
}
},
fieldSettings: {
listValues: {
plus: "+",
minus: "-"
}
},
escapeForFormat: false
},
val: {
label: "Value",
type: "number",
fieldSettings: {
min: 0
},
defaultValue: 0,
valueSources: ["value"],
escapeForFormat: false
},
dim: {
label: "Dimension",
type: "select",
defaultValue: datetimeDimDefault,
valueSources: ["value"],
mainWidgetProps: {
customProps: {
showSearch: false
}
},
fieldSettings: {
listValues: datetimeDimListValues
},
escapeForFormat: false
}
}
};
var RELATIVE_DATE = exports.RELATIVE_DATE = _objectSpread(_objectSpread({}, RELATIVE_DATETIME), {}, {
label: "Relative",
returnType: "date",
jsonLogic: function jsonLogic(_ref11) {
var date = _ref11.date,
op = _ref11.op,
val = _ref11.val,
dim = _ref11.dim;
return {
"date_add": [date, val * (op == "minus" ? -1 : +1), dim]
};
},
jsonLogicImport: function jsonLogicImport(v) {
var date = v["date_add"][0];
var val = Math.abs(v["date_add"][1]);
var op = v["date_add"][1] >= 0 ? "plus" : "minus";
var dim = v["date_add"][2];
return [date, op, val, dim];
},
jsonLogicCustomOps: {
date_add: {}
},
args: {
date: _objectSpread(_objectSpread({}, RELATIVE_DATETIME.args.date), {}, {
label: "Date",
type: "date",
defaultValue: {
func: "TODAY",
args: []
}
}),
op: _objectSpread({}, RELATIVE_DATETIME.args.op),
val: _objectSpread({}, RELATIVE_DATETIME.args.val),
dim: _objectSpread(_objectSpread({}, RELATIVE_DATETIME.args.dim), {}, {
defaultValue: dateDimDefault,
fieldSettings: {
listValues: dateDimListValues
}
})
}
});
// todo: add DATEDIFF (issue #142)
var LOWER = exports.LOWER = {
label: "Lowercase",
mongoFunc: "$toLower",
jsonLogic: "toLowerCase",
sqlFunc: "LOWER",
spelFunc: "${str}.toLowerCase()",
//jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution
jsonLogicCustomOps: {
toLowerCase: {}
},
returnType: "text",
args: {
str: {
label: "String",
type: "text",
valueSources: ["value", "field", "func"]
}
}
};
var UPPER = exports.UPPER = {
label: "Uppercase",
mongoFunc: "$toUpper",
jsonLogic: "toUpperCase",
sqlFunc: "UPPER",
spelFunc: "${str}.toUpperCase()",
//jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution
jsonLogicCustomOps: {
toUpperCase: {}
},
returnType: "text",
args: {
str: {
label: "String",
type: "text",
valueSources: ["value", "field", "func"]
}
}
};
var LINEAR_REGRESSION = exports.LINEAR_REGRESSION = {
label: "Linear regression",
returnType: "number",
formatFunc: function formatFunc(_ref12, _) {
var coef = _ref12.coef,
bias = _ref12.bias,
val = _ref12.val;
return "(".concat(coef, " * ").concat(val, " + ").concat(bias, ")");
},
sqlFormatFunc: function sqlFormatFunc(_ref13) {
var coef = _ref13.coef,
bias = _ref13.bias,
val = _ref13.val;
return "(".concat(coef, " * ").concat(val, " + ").concat(bias, ")");
},
spelFormatFunc: function spelFormatFunc(_ref14) {
var coef = _ref14.coef,
bias = _ref14.bias,
val = _ref14.val;
return "(".concat(coef, " * ").concat(val, " + ").concat(bias, ")");
},
spelImport: function spelImport(spel) {
var coef, val, bias, a;
if (spel.type === "op-plus") {
var _spel$children = (0, _slicedToArray2["default"])(spel.children, 2);
a = _spel$children[0];
bias = _spel$children[1];
if (a.type === "op-multiply") {
var _a$children = (0, _slicedToArray2["default"])(a.children, 2);
coef = _a$children[0];
val = _a$children[1];
return {
coef: coef,
val: val,
bias: bias
};
}
}
},
sqlImport: function sqlImport(sqlObj, _, sqlDialect) {
var _sqlObj$children11;
if (["+"].includes(sqlObj === null || sqlObj === void 0 ? void 0 : sqlObj.operator) && ((_sqlObj$children11 = sqlObj.children) === null || _sqlObj$children11 === void 0 ? void 0 : _sqlObj$children11.length) === 2) {
var _left$children;
var _sqlObj$children12 = (0, _slicedToArray2["default"])(sqlObj.children, 2),
left = _sqlObj$children12[0],
bias = _sqlObj$children12[1];
if (["*"].includes(left === null || left === void 0 ? void 0 : left.operator) && ((_left$children = left.children) === null || _left$children === void 0 ? void 0 : _left$children.length) === 2) {
var _left$children2 = (0, _slicedToArray2["default"])(left.children, 2),
coef = _left$children2[0],
val = _left$children2[1];
return {
args: {
coef: coef,
val: val,
bias: bias
}
};
}
}
},
mongoFormatFunc: function mongoFormatFunc(_ref15) {
var coef = _ref15.coef,
bias = _ref15.bias,
val = _ref15.val;
return {
"$sum": [{
"$multiply": [coef, val]
}, bias]
};
},
jsonLogic: function jsonLogic(_ref16) {
var coef = _ref16.coef,
bias = _ref16.bias,
val = _ref16.val;
return {
"+": [{
"*": [coef, val]
}, bias]
};
},
jsonLogicImport: function jsonLogicImport(v) {
var coef = v["+"][0]["*"][0];
var val = v["+"][0]["*"][1];
var bias = v["+"][1];
return [coef, val, bias];
},
renderBrackets: ["", ""],
renderSeps: [" * ", " + "],
args: {
coef: {
label: "Coef",
type: "number",
defaultValue: 1,
valueSources: ["value"]
},
val: {
label: "Value",
type: "number",
valueSources: ["value", "field"]
},
bias: {
label: "Bias",
type: "number",
defaultValue: 0,
valueSources: ["value"]
}
}
};