@saltcorn/data 0.9.3-beta.7 → 0.9.3-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-plugin/actions.d.ts +1 -1
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +5 -3
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fieldviews.d.ts.map +1 -1
- package/dist/base-plugin/fieldviews.js +25 -1
- package/dist/base-plugin/fieldviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +126 -111
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +46 -29
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +37 -1
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +7 -19
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +3 -3
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +13 -2
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.js +13 -3
- package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +7 -21
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +58 -18
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/db/fixtures.d.ts.map +1 -1
- package/dist/db/fixtures.js +376 -2
- package/dist/db/fixtures.js.map +1 -1
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +10 -4
- package/dist/db/state.js.map +1 -1
- package/dist/models/field.d.ts +5 -0
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +22 -0
- package/dist/models/field.js.map +1 -1
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +25 -1
- package/dist/models/scheduler.js.map +1 -1
- package/dist/plugin-helper.d.ts +24 -0
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +97 -30
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/auxtest.test.js +18 -3
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/calc.test.js +2 -1
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -0
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
- package/dist/migrations/202311231355.d.ts +0 -2
- package/dist/migrations/202311231355.d.ts.map +0 -1
- package/dist/migrations/202311231355.js +0 -19
- package/dist/migrations/202311231355.js.map +0 -1
package/dist/models/scheduler.js
CHANGED
|
@@ -40,11 +40,29 @@ const intervalIsNow = async (name) => {
|
|
|
40
40
|
due = new Date(due);
|
|
41
41
|
return due < now;
|
|
42
42
|
};
|
|
43
|
+
const regexHHMM = /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;
|
|
43
44
|
/**
|
|
44
45
|
* @param {string} name
|
|
45
46
|
* @param {number} hours
|
|
46
47
|
* @returns {Promise<Trigger[]>}
|
|
47
48
|
*/
|
|
49
|
+
const getDailyTriggersDueNow = (tickSeconds) => {
|
|
50
|
+
let triggers = trigger_1.default.find({ when_trigger: "Daily" });
|
|
51
|
+
return triggers.filter((tr) => {
|
|
52
|
+
if (!tr.channel)
|
|
53
|
+
return false;
|
|
54
|
+
const m = tr.channel.match?.(regexHHMM);
|
|
55
|
+
if (!m)
|
|
56
|
+
return false;
|
|
57
|
+
const time_to_run = new Date();
|
|
58
|
+
time_to_run.setHours(+m[1]);
|
|
59
|
+
time_to_run.setMinutes(+m[2]);
|
|
60
|
+
const now = new Date();
|
|
61
|
+
const nextTick = new Date();
|
|
62
|
+
nextTick.setSeconds(nextTick.getSeconds() + tickSeconds);
|
|
63
|
+
return time_to_run >= now && time_to_run < nextTick;
|
|
64
|
+
});
|
|
65
|
+
};
|
|
48
66
|
const getIntervalTriggersDueNow = async (name, hours) => {
|
|
49
67
|
const state = getState();
|
|
50
68
|
const cfgField = `next_${name.toLowerCase()}_event`;
|
|
@@ -65,7 +83,11 @@ const getIntervalTriggersDueNow = async (name, hours) => {
|
|
|
65
83
|
if (due > now)
|
|
66
84
|
return [];
|
|
67
85
|
//console.log("after check", {due, name, now});
|
|
68
|
-
|
|
86
|
+
let triggers = await trigger_1.default.find({ when_trigger: name });
|
|
87
|
+
// legacy: daily events without a specified time
|
|
88
|
+
if (name === "Daily") {
|
|
89
|
+
triggers = triggers.filter((tr) => !tr.channel || !tr.channel.match?.(regexHHMM));
|
|
90
|
+
}
|
|
69
91
|
due.setHours(due.getHours() + hours);
|
|
70
92
|
if (now > due) {
|
|
71
93
|
// we must have skipped events, e.g. if not running continuously
|
|
@@ -151,12 +173,14 @@ const runScheduler = async ({ stop_when = () => false, tickSeconds = 60 * 5, wat
|
|
|
151
173
|
const triggers = await trigger_1.default.find({ when_trigger: "Often" });
|
|
152
174
|
const trsHourly = await getIntervalTriggersDueNow("Hourly", 1);
|
|
153
175
|
const trsDaily = await getIntervalTriggersDueNow("Daily", 24);
|
|
176
|
+
const trsDailyNowTime = getDailyTriggersDueNow(tickSeconds);
|
|
154
177
|
const trsWeekly = await getIntervalTriggersDueNow("Weekly", 24 * 7);
|
|
155
178
|
const allTriggers = [
|
|
156
179
|
...triggers,
|
|
157
180
|
...trsHourly,
|
|
158
181
|
...trsDaily,
|
|
159
182
|
...trsWeekly,
|
|
183
|
+
...trsDailyNowTime,
|
|
160
184
|
];
|
|
161
185
|
for (const trigger of allTriggers) {
|
|
162
186
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../models/scheduler.ts"],"names":[],"mappings":";;;;AAAA;;;;GAIG;AACH,oDAA4B;AAC5B,wDAAgC;AAChC,+CAAuB;AACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAC5C,4DAA+B;AAC/B,0DAAkC;AAClC,2DAAmC;AACnC,MAAM,EAAE,UAAU,EAAE,GAAG,eAAK,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,WAAmB,EAAiB,EAAE;IACpE,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE;IAC7D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/C,gCAAgC;IAChC,IAAI,CAAC,GAAG,EAAE;QACR,wBAAwB;QACxB,OAAO,KAAK,CAAC;KACd;IACD,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpB,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../models/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin-helper.d.ts
CHANGED
|
@@ -216,7 +216,31 @@ export function build_schema_data(): Promise<{
|
|
|
216
216
|
}[];
|
|
217
217
|
}[];
|
|
218
218
|
}>;
|
|
219
|
+
/**
|
|
220
|
+
* tries to match a type to a relation
|
|
221
|
+
* if it's not ChildList, ParentShow, Own, or Independent then RelationPath is returned
|
|
222
|
+
* @param {View} subView
|
|
223
|
+
* @param {string[]} path
|
|
224
|
+
* @param {Table} srcTable
|
|
225
|
+
* @returns ChildList, ParentShow, Own, Independent or RelationPath
|
|
226
|
+
*/
|
|
227
|
+
export function relationTypeFromPath(subview: any, path: string[], srcTable: Table): "ChildList" | "ParentShow" | "Own" | "Independent" | "RelationPath";
|
|
228
|
+
/**
|
|
229
|
+
* creates a state object from a relation path
|
|
230
|
+
* @param {View} subview
|
|
231
|
+
* @param {string} relation
|
|
232
|
+
* @param {string[]} pathArr
|
|
233
|
+
* @param {Function} getRowVal
|
|
234
|
+
* @param {Table} srcTbl
|
|
235
|
+
*/
|
|
236
|
+
export function pathToState(subview: View, relation: string, pathArr: string[], getRowVal: Function, srcTbl: Table): {
|
|
237
|
+
[x: number]: any;
|
|
238
|
+
id?: undefined;
|
|
239
|
+
} | {
|
|
240
|
+
id: any;
|
|
241
|
+
};
|
|
219
242
|
import Table = require("./models/table");
|
|
220
243
|
import Field = require("./models/field");
|
|
244
|
+
import View = require("./models/view");
|
|
221
245
|
export { add_free_variables_to_joinfields };
|
|
222
246
|
//# sourceMappingURL=plugin-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"AAsvBA;;;;;;;;;GASG;AACH,wHARW,KAAK,GAAC,MAAM,GAMV,QAAQ,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"AAsvBA;;;;;;;;;GASG;AACH,wHARW,KAAK,GAAC,MAAM,GAMV,QAAQ,MAAM,EAAE,CAAC,CAymB7B;AAqGD;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,UACR,KAAK,EAAE,gBAGL,MAAM,CAkLlB;AA5RD;;;;;;;GAOG;AACH,uCALW,KAAK,GAAC,MAAM,YACZ,MAAM,sBAEJ,QAAQ,MAAM,EAAE,CAAC,CAoC7B;AAED;;;;;;GAMG;AACH,wCAJW,KAAK,GAAC,MAAM,YACZ,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAoB7B;AAiVD;;;;;;;;GAQG;AACH;IANyB,MAAM,EAApB,KAAK,EAAE;IACM,KAAK,EAAlB,MAAM;IACS,WAAW;IACd,KAAK,EAAjB,KAAK;IACH,MAAM,CAiOlB;AAhWD;;;;;GAKG;AACH,2FAHW,MAAM,GACJ,MAAM,CA8ClB;AAgTD;;;;;GAKG;AACH,iEA+GG;AAn8DH;;;;;;GAMG;AACH,2CALW,KAAK,EAAE,sCAGL,MAAM,CA2FlB;AAED;;;;;;GAMG;AACH,+EAkBC;AA0TD;;;;;GAKG;AACH,0CAJW,KAAK,GAAC,MAAM,YACZ,MAAM;oBACqB,MAAM,EAAE;GAqJ7C;AAk4CD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CA0ClB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AAhkED;;;;GAIG;AACH,gEAFa,MAAM,CAoBlB;AA5HD;;;;;;;;;;;;;;;;GAgBG;AACH,gCAfW,MAAM,SACN,MAAM,oUAYJ,UAAQ,CAoFpB;AA2mBD;;;;;GAKG;AACH,8CAJW,MAAM,SACN,MAAM,eACJ,QAAQ,MAAM,EAAE,CAAC,CAKC;AA5d/B;;;;;;GAMG;AACH,0CALW,KAAK,EAAE,mCAGL,QAAQ,MAAM,CAAC,CAkC3B;AAiyDD;;;;GAIG;AAEH,kCAJW,MAAM,GACJ,MAAM,GAAC,SAAS,CAM5B;AAmND;;;;;;GAMG;AACH,yDALW,MAAM,GAGJ,YAAU,CA2CtB;AAzKD;;;;;;GAMG;AACH,8EAHW,MAAM,EAAE,GACN,MAAM,CAkHlB;;AAt5DD;;;;;GAKG;AACH,kDAJW,KAAK,YACL,MAAM,8BAgDhB;AAED;;;;;;;GAOG;AACH,uDAJW,KAAK,YACL,MAAM;;;KAkChB;AAED;;;;;;;GAOG;AACH,uDANW,KAAK,YACL,MAAM,SACN,MAAM,QACN,MAAM,EAAE,OAuElB;AA6yDD;;;;;;;;;;;;;;;;;;;GA8BC;AAED;;;;;;;GAOG;AACH,yDAJW,MAAM,EAAE,YACR,KAAK,uEAYf;AAED;;;;;;;GAOG;AACH,qCANW,IAAI,YACJ,MAAM,WACN,MAAM,EAAE,+BAER,KAAK;;;;;EA2Bf"}
|
package/dist/plugin-helper.js
CHANGED
|
@@ -807,8 +807,13 @@ const field_picker_fields = async ({ table, viewname, req, has_click_to_edit, ha
|
|
|
807
807
|
name: "formula",
|
|
808
808
|
label: __("Formula"),
|
|
809
809
|
type: "String",
|
|
810
|
+
fieldview: "textarea",
|
|
810
811
|
class: "validate-expression",
|
|
811
812
|
showIf: { type: "FormulaValue" },
|
|
813
|
+
attributes: {
|
|
814
|
+
rows: 2,
|
|
815
|
+
spellcheck: false,
|
|
816
|
+
},
|
|
812
817
|
},
|
|
813
818
|
{
|
|
814
819
|
name: "field_name",
|
|
@@ -1538,6 +1543,38 @@ const queryToString = (query) => {
|
|
|
1538
1543
|
};
|
|
1539
1544
|
return JSON.stringify(relObj);
|
|
1540
1545
|
};
|
|
1546
|
+
const handleRelationPath = (queryObj, qstate) => {
|
|
1547
|
+
if (queryObj.path.length > 0) {
|
|
1548
|
+
const levels = [];
|
|
1549
|
+
let lastTableName = queryObj.sourcetable;
|
|
1550
|
+
let where = null;
|
|
1551
|
+
for (const level of queryObj.path) {
|
|
1552
|
+
if (level.inboundKey) {
|
|
1553
|
+
levels.push({ ...level });
|
|
1554
|
+
lastTableName = level.table;
|
|
1555
|
+
if (!where)
|
|
1556
|
+
where = {
|
|
1557
|
+
[db.sqlsanitize(level.inboundKey)]: queryObj.srcId !== "NULL" ? queryObj.srcId : null,
|
|
1558
|
+
};
|
|
1559
|
+
}
|
|
1560
|
+
else {
|
|
1561
|
+
const lastTable = Table.findOne({ name: lastTableName });
|
|
1562
|
+
const refField = lastTable.fields.find((field) => field.name === level.fkey);
|
|
1563
|
+
levels.push({ table: refField.reftable_name, fkey: level.fkey });
|
|
1564
|
+
lastTableName = refField.reftable_name;
|
|
1565
|
+
if (!where)
|
|
1566
|
+
where = { id: queryObj.srcId !== "NULL" ? queryObj.srcId : null };
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
addOrCreateList(qstate, "id", {
|
|
1570
|
+
inSelectWithLevels: {
|
|
1571
|
+
joinLevels: levels,
|
|
1572
|
+
schema: db.getTenantSchema(),
|
|
1573
|
+
where,
|
|
1574
|
+
},
|
|
1575
|
+
});
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1541
1578
|
/**
|
|
1542
1579
|
* @function
|
|
1543
1580
|
* @param {object} opts
|
|
@@ -1567,36 +1604,12 @@ const stateFieldsToWhere = ({ fields, state, approximate = true, table }) => {
|
|
|
1567
1604
|
return;
|
|
1568
1605
|
}
|
|
1569
1606
|
const field = fields.find((fld) => fld.name === k);
|
|
1570
|
-
if (k === "_relation_path_" || k === "_inbound_relation_path_")
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
for (const level of queryObj.path) {
|
|
1577
|
-
if (level.inboundKey) {
|
|
1578
|
-
levels.push({ ...level });
|
|
1579
|
-
lastTableName = level.table;
|
|
1580
|
-
if (!where)
|
|
1581
|
-
where = { [db.sqlsanitize(level.inboundKey)]: queryObj.srcId };
|
|
1582
|
-
}
|
|
1583
|
-
else {
|
|
1584
|
-
const lastTable = Table.findOne({ name: lastTableName });
|
|
1585
|
-
const refField = lastTable.fields.find((field) => field.name === level.fkey);
|
|
1586
|
-
levels.push({ table: refField.reftable_name, fkey: level.fkey });
|
|
1587
|
-
lastTableName = refField.reftable_name;
|
|
1588
|
-
if (!where)
|
|
1589
|
-
where = { id: queryObj.srcId };
|
|
1590
|
-
}
|
|
1591
|
-
}
|
|
1592
|
-
addOrCreateList(qstate, "id", {
|
|
1593
|
-
inSelectWithLevels: {
|
|
1594
|
-
joinLevels: levels,
|
|
1595
|
-
schema: db.getTenantSchema(),
|
|
1596
|
-
where,
|
|
1597
|
-
},
|
|
1598
|
-
});
|
|
1599
|
-
}
|
|
1607
|
+
if (k === "_relation_path_" || k === "_inbound_relation_path_")
|
|
1608
|
+
handleRelationPath(typeof v === "string" ? stringToQuery(v) : v, qstate);
|
|
1609
|
+
else if (k.startsWith(".")) {
|
|
1610
|
+
const queryObj = parseRelationPath(k);
|
|
1611
|
+
queryObj.srcId = v;
|
|
1612
|
+
handleRelationPath(queryObj, qstate);
|
|
1600
1613
|
}
|
|
1601
1614
|
else if (k.startsWith("_fromdate_")) {
|
|
1602
1615
|
const datefield = db.sqlsanitize(k.replace("_fromdate_", ""));
|
|
@@ -2224,6 +2237,58 @@ const build_schema_data = async () => {
|
|
|
2224
2237
|
})));
|
|
2225
2238
|
return { views, tables };
|
|
2226
2239
|
};
|
|
2240
|
+
/**
|
|
2241
|
+
* tries to match a type to a relation
|
|
2242
|
+
* if it's not ChildList, ParentShow, Own, or Independent then RelationPath is returned
|
|
2243
|
+
* @param {View} subView
|
|
2244
|
+
* @param {string[]} path
|
|
2245
|
+
* @param {Table} srcTable
|
|
2246
|
+
* @returns ChildList, ParentShow, Own, Independent or RelationPath
|
|
2247
|
+
*/
|
|
2248
|
+
const relationTypeFromPath = (subview, path, srcTable) => {
|
|
2249
|
+
if (path.length === 1 && path[0].inboundKey)
|
|
2250
|
+
return "ChildList"; // works for OneToOneShow as well
|
|
2251
|
+
else if (path.length === 2 && path.every((p) => p.inboundKey))
|
|
2252
|
+
return "ChildList";
|
|
2253
|
+
else if (path.length === 1 && path[0].fkey)
|
|
2254
|
+
return "ParentShow";
|
|
2255
|
+
else if (path.length === 0)
|
|
2256
|
+
return subview.table_id === srcTable.id ? "Own" : "Independent";
|
|
2257
|
+
else
|
|
2258
|
+
return "RelationPath";
|
|
2259
|
+
};
|
|
2260
|
+
/**
|
|
2261
|
+
* creates a state object from a relation path
|
|
2262
|
+
* @param {View} subview
|
|
2263
|
+
* @param {string} relation
|
|
2264
|
+
* @param {string[]} pathArr
|
|
2265
|
+
* @param {Function} getRowVal
|
|
2266
|
+
* @param {Table} srcTbl
|
|
2267
|
+
*/
|
|
2268
|
+
const pathToState = (subview, relation, pathArr, getRowVal, srcTbl) => {
|
|
2269
|
+
const subTbl = Table.findOne({ id: subview.table_id });
|
|
2270
|
+
const pkName = subTbl.pk_name;
|
|
2271
|
+
switch (relationTypeFromPath(subview, pathArr, srcTbl)) {
|
|
2272
|
+
case "ChildList":
|
|
2273
|
+
return pathArr.length === 1
|
|
2274
|
+
? {
|
|
2275
|
+
[pathArr[0].inboundKey]: getRowVal(pkName), // works for OneToOneShow as well
|
|
2276
|
+
}
|
|
2277
|
+
: {
|
|
2278
|
+
[`${pathArr[1].table}.${pathArr[1].inboundKey}.${pathArr[0].table}.${pathArr[0].inboundKey}`]: getRowVal(pkName),
|
|
2279
|
+
};
|
|
2280
|
+
case "ParentShow":
|
|
2281
|
+
return { id: getRowVal(pathArr[0].fkey) };
|
|
2282
|
+
case "Own":
|
|
2283
|
+
return { [pkName]: getRowVal(pkName) };
|
|
2284
|
+
case "Independent":
|
|
2285
|
+
return {};
|
|
2286
|
+
case "RelationPath":
|
|
2287
|
+
return {
|
|
2288
|
+
[relation]: getRowVal(pathArr[0].fkey ? pathArr[0].fkey : pkName) || "NULL",
|
|
2289
|
+
};
|
|
2290
|
+
}
|
|
2291
|
+
};
|
|
2227
2292
|
module.exports = {
|
|
2228
2293
|
field_picker_fields,
|
|
2229
2294
|
picked_fields_to_query,
|
|
@@ -2249,5 +2314,7 @@ module.exports = {
|
|
|
2249
2314
|
get_inbound_self_relation_opts,
|
|
2250
2315
|
get_many_to_many_relation_opts,
|
|
2251
2316
|
build_schema_data,
|
|
2317
|
+
relationTypeFromPath,
|
|
2318
|
+
pathToState,
|
|
2252
2319
|
};
|
|
2253
2320
|
//# sourceMappingURL=plugin-helper.js.map
|