forked from ukrbublik/react-awesome-query-builder
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathctx.js
More file actions
67 lines (63 loc) · 1.98 KB
/
ctx.js
File metadata and controls
67 lines (63 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import moment from "moment";
import {
SqlString, sqlEmptyValue, mongoEmptyValue, spelEscape, spelFixList,
stringifyForDisplay
} from "../utils/export";
import {escapeRegExp} from "../utils/stuff";
import {getTitleInListValues} from "../utils/listValues";
// helpers for mongo format
export const mongoFormatOp1 = (mop, mc, not, field, _op, value, useExpr, valueSrc, valueType, opDef, operatorOptions, fieldDef) => {
const $field = typeof field == "string" && !field.startsWith("$") ? "$"+field : field;
const mv = mc(value, fieldDef);
if (mv === undefined)
return undefined;
if (not) {
if (!useExpr && (!mop || mop == "$eq"))
return { [field]: { "$ne": mv } }; // short form
return !useExpr
? { [field]: { "$not": { [mop]: mv } } }
: { "$not": { [mop]: [$field, mv] } };
} else {
if (!useExpr && (!mop || mop == "$eq"))
return { [field]: mv }; // short form
return !useExpr
? { [field]: { [mop]: mv } }
: { [mop]: [$field, mv] };
}
};
export const mongoFormatOp2 = (mops, not, field, _op, values, useExpr, valueSrcs, valueTypes, opDef, operatorOptions, fieldDef) => {
const $field = typeof field == "string" && !field.startsWith("$") ? "$"+field : field;
if (not) {
return !useExpr
? { [field]: { "$not": { [mops[0]]: values[0], [mops[1]]: values[1] } } }
: {"$not":
{"$and": [
{ [mops[0]]: [ $field, values[0] ] },
{ [mops[1]]: [ $field, values[1] ] },
]}
};
} else {
return !useExpr
? { [field]: { [mops[0]]: values[0], [mops[1]]: values[1] } }
: {"$and": [
{ [mops[0]]: [ $field, values[0] ] },
{ [mops[1]]: [ $field, values[1] ] },
]};
}
};
const ctx = {
utils: {
SqlString,
moment,
mongoFormatOp1,
mongoFormatOp2,
mongoEmptyValue,
escapeRegExp,
sqlEmptyValue,
stringifyForDisplay,
getTitleInListValues,
spelEscape,
spelFixList,
},
};
export default ctx;