@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.
Files changed (60) hide show
  1. package/dist/base-plugin/actions.d.ts +1 -1
  2. package/dist/base-plugin/actions.d.ts.map +1 -1
  3. package/dist/base-plugin/actions.js +5 -3
  4. package/dist/base-plugin/actions.js.map +1 -1
  5. package/dist/base-plugin/fieldviews.d.ts.map +1 -1
  6. package/dist/base-plugin/fieldviews.js +25 -1
  7. package/dist/base-plugin/fieldviews.js.map +1 -1
  8. package/dist/base-plugin/index.d.ts +126 -111
  9. package/dist/base-plugin/index.d.ts.map +1 -1
  10. package/dist/base-plugin/types.d.ts +46 -29
  11. package/dist/base-plugin/types.d.ts.map +1 -1
  12. package/dist/base-plugin/types.js +37 -1
  13. package/dist/base-plugin/types.js.map +1 -1
  14. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  15. package/dist/base-plugin/viewtemplates/edit.js +7 -19
  16. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  17. package/dist/base-plugin/viewtemplates/filter.js +3 -3
  18. package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
  19. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
  20. package/dist/base-plugin/viewtemplates/list.js +13 -2
  21. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  22. package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
  23. package/dist/base-plugin/viewtemplates/listshowlist.js +13 -3
  24. package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
  25. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  26. package/dist/base-plugin/viewtemplates/show.js +7 -21
  27. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  28. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  29. package/dist/base-plugin/viewtemplates/viewable_fields.js +58 -18
  30. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  31. package/dist/db/fixtures.d.ts.map +1 -1
  32. package/dist/db/fixtures.js +376 -2
  33. package/dist/db/fixtures.js.map +1 -1
  34. package/dist/db/state.d.ts.map +1 -1
  35. package/dist/db/state.js +10 -4
  36. package/dist/db/state.js.map +1 -1
  37. package/dist/models/field.d.ts +5 -0
  38. package/dist/models/field.d.ts.map +1 -1
  39. package/dist/models/field.js +22 -0
  40. package/dist/models/field.js.map +1 -1
  41. package/dist/models/scheduler.d.ts.map +1 -1
  42. package/dist/models/scheduler.js +25 -1
  43. package/dist/models/scheduler.js.map +1 -1
  44. package/dist/plugin-helper.d.ts +24 -0
  45. package/dist/plugin-helper.d.ts.map +1 -1
  46. package/dist/plugin-helper.js +97 -30
  47. package/dist/plugin-helper.js.map +1 -1
  48. package/dist/tests/auxtest.test.js +18 -3
  49. package/dist/tests/auxtest.test.js.map +1 -1
  50. package/dist/tests/calc.test.js +2 -1
  51. package/dist/tests/calc.test.js.map +1 -1
  52. package/dist/utils.d.ts +1 -0
  53. package/dist/utils.d.ts.map +1 -1
  54. package/dist/utils.js +17 -0
  55. package/dist/utils.js.map +1 -1
  56. package/package.json +7 -7
  57. package/dist/migrations/202311231355.d.ts +0 -2
  58. package/dist/migrations/202311231355.d.ts.map +0 -1
  59. package/dist/migrations/202311231355.js +0 -19
  60. package/dist/migrations/202311231355.js.map +0 -1
@@ -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
- const triggers = await trigger_1.default.find({ when_trigger: name });
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":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../models/scheduler.ts"],"names":[],"mappings":"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"}
@@ -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,CAmmB7B;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;AA8SD;;;;;;;;GAQG;AACH;IANyB,MAAM,EAApB,KAAK,EAAE;IACM,KAAK,EAAlB,MAAM;IACS,WAAW;IACd,KAAK,EAAjB,KAAK;IACH,MAAM,CAyPlB;AArVD;;;;;GAKG;AACH,2FAHW,MAAM,GACJ,MAAM,CA8ClB;AAqSD;;;;;GAKG;AACH,iEA+GG;AAl7DH;;;;;;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;AAi3CD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CA0ClB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AA/iED;;;;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;AAgxDD;;;;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;;AAr4DD;;;;;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;AA4xDD;;;;;;;;;;;;;;;;;;;GA8BC"}
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"}
@@ -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
- const queryObj = typeof v === "string" ? stringToQuery(v) : v;
1572
- if (queryObj.path.length > 0) {
1573
- const levels = [];
1574
- let lastTableName = queryObj.sourcetable;
1575
- let where = null;
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