@saltcorn/data 0.8.5 → 0.8.6-beta.10

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 (128) hide show
  1. package/dist/base-plugin/actions.js +1 -1
  2. package/dist/base-plugin/actions.js.map +1 -1
  3. package/dist/base-plugin/fileviews.d.ts +23 -0
  4. package/dist/base-plugin/fileviews.js +34 -0
  5. package/dist/base-plugin/fileviews.js.map +1 -1
  6. package/dist/base-plugin/index.d.ts +5 -1
  7. package/dist/base-plugin/index.d.ts.map +1 -1
  8. package/dist/base-plugin/types.d.ts +51 -44
  9. package/dist/base-plugin/types.d.ts.map +1 -1
  10. package/dist/base-plugin/types.js +24 -13
  11. package/dist/base-plugin/types.js.map +1 -1
  12. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  13. package/dist/base-plugin/viewtemplates/edit.js +34 -5
  14. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  15. package/dist/base-plugin/viewtemplates/feed.js +1 -1
  16. package/dist/base-plugin/viewtemplates/feed.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.js +3 -3
  20. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  21. package/dist/base-plugin/viewtemplates/room.js +2 -2
  22. package/dist/base-plugin/viewtemplates/room.js.map +1 -1
  23. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  24. package/dist/base-plugin/viewtemplates/show.js +19 -8
  25. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  26. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +7 -4
  27. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  28. package/dist/base-plugin/viewtemplates/viewable_fields.js +113 -83
  29. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  30. package/dist/db/fixtures.d.ts.map +1 -1
  31. package/dist/db/fixtures.js +422 -20
  32. package/dist/db/fixtures.js.map +1 -1
  33. package/dist/db/state.d.ts +1 -0
  34. package/dist/db/state.d.ts.map +1 -1
  35. package/dist/db/state.js +9 -2
  36. package/dist/db/state.js.map +1 -1
  37. package/dist/diagram/node_extract_utils.d.ts.map +1 -1
  38. package/dist/diagram/node_extract_utils.js +7 -3
  39. package/dist/diagram/node_extract_utils.js.map +1 -1
  40. package/dist/migrations/202304281224.d.ts +3 -0
  41. package/dist/migrations/202304281224.d.ts.map +1 -0
  42. package/dist/migrations/202304281224.js +117 -0
  43. package/dist/migrations/202304281224.js.map +1 -0
  44. package/dist/migrations/202305081143.d.ts +2 -0
  45. package/dist/migrations/202305081143.d.ts.map +1 -0
  46. package/dist/migrations/202305081143.js +17 -0
  47. package/dist/migrations/202305081143.js.map +1 -0
  48. package/dist/models/config.d.ts +1 -0
  49. package/dist/models/config.d.ts.map +1 -1
  50. package/dist/models/config.js +11 -4
  51. package/dist/models/config.js.map +1 -1
  52. package/dist/models/email.js +1 -1
  53. package/dist/models/field.d.ts.map +1 -1
  54. package/dist/models/field.js +23 -3
  55. package/dist/models/field.js.map +1 -1
  56. package/dist/models/file.d.ts +36 -1
  57. package/dist/models/file.d.ts.map +1 -1
  58. package/dist/models/file.js +48 -5
  59. package/dist/models/file.js.map +1 -1
  60. package/dist/models/index.d.ts +2 -1
  61. package/dist/models/index.d.ts.map +1 -1
  62. package/dist/models/layout.d.ts +1 -1
  63. package/dist/models/layout.d.ts.map +1 -1
  64. package/dist/models/layout.js +3 -1
  65. package/dist/models/layout.js.map +1 -1
  66. package/dist/models/page.js +1 -1
  67. package/dist/models/page.js.map +1 -1
  68. package/dist/models/random.js +1 -1
  69. package/dist/models/random.js.map +1 -1
  70. package/dist/models/table.d.ts +14 -3
  71. package/dist/models/table.d.ts.map +1 -1
  72. package/dist/models/table.js +71 -16
  73. package/dist/models/table.js.map +1 -1
  74. package/dist/models/user.js +1 -1
  75. package/dist/models/user.js.map +1 -1
  76. package/dist/models/view.d.ts +1 -0
  77. package/dist/models/view.d.ts.map +1 -1
  78. package/dist/models/view.js +27 -4
  79. package/dist/models/view.js.map +1 -1
  80. package/dist/models/workflow.d.ts.map +1 -1
  81. package/dist/models/workflow.js +5 -1
  82. package/dist/models/workflow.js.map +1 -1
  83. package/dist/plugin-helper.d.ts +26 -1
  84. package/dist/plugin-helper.d.ts.map +1 -1
  85. package/dist/plugin-helper.js +270 -16
  86. package/dist/plugin-helper.js.map +1 -1
  87. package/dist/tests/auth.test.js +12 -12
  88. package/dist/tests/auth.test.js.map +1 -1
  89. package/dist/tests/auxtest.test.js +132 -3
  90. package/dist/tests/auxtest.test.js.map +1 -1
  91. package/dist/tests/base.test.d.ts +2 -0
  92. package/dist/tests/base.test.d.ts.map +1 -0
  93. package/dist/tests/base.test.js +30 -0
  94. package/dist/tests/base.test.js.map +1 -0
  95. package/dist/tests/calc.test.js +2 -2
  96. package/dist/tests/calc.test.js.map +1 -1
  97. package/dist/tests/common_helpers.d.ts +8 -0
  98. package/dist/tests/common_helpers.d.ts.map +1 -0
  99. package/dist/tests/common_helpers.js +362 -0
  100. package/dist/tests/common_helpers.js.map +1 -0
  101. package/dist/tests/email.test.js +4 -4
  102. package/dist/tests/email.test.js.map +1 -1
  103. package/dist/tests/exact_views.test.js +11 -11
  104. package/dist/tests/exact_views.test.js.map +1 -1
  105. package/dist/tests/mocks.js +1 -1
  106. package/dist/tests/mocks.js.map +1 -1
  107. package/dist/tests/models.test.js +4 -4
  108. package/dist/tests/models.test.js.map +1 -1
  109. package/dist/tests/remote_query_helper.js +6 -6
  110. package/dist/tests/remote_query_helper.js.map +1 -1
  111. package/dist/tests/state.test.js +1 -1
  112. package/dist/tests/state.test.js.map +1 -1
  113. package/dist/tests/table.test.js +23 -8
  114. package/dist/tests/table.test.js.map +1 -1
  115. package/dist/tests/user.test.js +3 -3
  116. package/dist/tests/user.test.js.map +1 -1
  117. package/dist/tests/view.test.js +230 -10
  118. package/dist/tests/view.test.js.map +1 -1
  119. package/dist/utils.d.ts +17 -0
  120. package/dist/utils.d.ts.map +1 -1
  121. package/dist/utils.js +32 -0
  122. package/dist/utils.js.map +1 -1
  123. package/dist/web-mobile-commons.d.ts +2 -0
  124. package/dist/web-mobile-commons.d.ts.map +1 -1
  125. package/dist/web-mobile-commons.js +43 -2
  126. package/dist/web-mobile-commons.js.map +1 -1
  127. package/package.json +8 -7
  128. package/webpack.config.js +3 -0
@@ -33,6 +33,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  };
34
34
  const common_types_1 = require("@saltcorn/types/common_types");
35
35
  const db_1 = __importDefault(require("../db"));
36
+ const { build_schema_fk_options } = require("../plugin-helper");
36
37
  const { getState } = require("../db/state");
37
38
  const { applyAsync, apply } = require("../utils");
38
39
  /**
@@ -228,13 +229,16 @@ class Workflow {
228
229
  fonts: getState().fonts,
229
230
  };
230
231
  const Table = (await Promise.resolve().then(() => __importStar(require("./table")))).default;
231
- const table = Table.findOne({ id: context.table_id });
232
+ const table = Table.findOne(context.table_id
233
+ ? { id: context.table_id }
234
+ : { name: context.exttable_name });
232
235
  if (table) {
233
236
  options.join_field_picker_data = {
234
237
  join_field_options: await table.get_join_field_options(true, true),
235
238
  relation_options: await table.get_relation_options(),
236
239
  };
237
240
  }
241
+ options.fk_options = await build_schema_fk_options();
238
242
  return {
239
243
  renderBuilder: {
240
244
  options,
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../models/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../models/workflow.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ export function get_parent_views(table: Table | object, viewname: string): Promi
37
37
  * @function
38
38
  * @param {object} opts
39
39
  * @param {Field[]} opts.fields
40
- * @param {object} opts.state missing in contract
40
+ * @param {object} opts.state
41
41
  * @param {boolean} [opts.approximate = true]
42
42
  * @param {Table} opts.table
43
43
  * @returns {object}
@@ -164,6 +164,31 @@ export function run_action_column({ col, req, ...rest }: object): Promise<any>;
164
164
  */
165
165
  export function json_list_to_external_table(get_json_list: Function, fields0: object[]): object;
166
166
  import { add_free_variables_to_joinfields } from "./models/expression";
167
+ /**
168
+ * search for relations where an in select to source is possible
169
+ * @param {Table} source
170
+ * @param {string} viewname
171
+ * @returns
172
+ */
173
+ export function get_inbound_relation_opts(source: Table, viewname: string): Promise<any[]>;
174
+ /**
175
+ * Get all relation options where source has a key to another table (refTable)
176
+ * and refTable has a key to source.
177
+ * Otherwise one could use a OneToOneShow from refTable.
178
+ * @param {Table} source
179
+ * @param {string} viewname name of the topview
180
+ * @returns viewnames mapped to arrays of Inbound options
181
+ */
182
+ export function get_inbound_self_relation_opts(source: Table, viewname: string): Promise<{
183
+ path: string;
184
+ views: View[];
185
+ }[]>;
186
+ /**
187
+ * for all tables collect the foreign keys with the targets
188
+ * should only be used as options for the saltcorn-builder
189
+ * @returns table names as key and the fks as value
190
+ */
191
+ export function build_schema_fk_options(): Promise<{}>;
167
192
  import Table = require("./models/table");
168
193
  import Field = require("./models/field");
169
194
  export { add_free_variables_to_joinfields };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"AAqZA;;;;;;GAMG;AACH,6FALW,KAAK,GAAC,MAAM,GAGV,QAAQ,MAAM,EAAE,CAAC,CAijB7B;AA+FD;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,UACR,KAAK,EAAE,gBAGL,MAAM,CAyJlB;AA7PD;;;;;;;GAOG;AACH,uCALW,KAAK,GAAC,MAAM,YACZ,MAAM,sBAEJ,QAAQ,MAAM,EAAE,CAAC,CAiC7B;AAED;;;;;;GAMG;AACH,wCAJW,KAAK,GAAC,MAAM,YACZ,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAoB7B;AAsPD;;;;;;;;GAQG;AACH;IANyB,MAAM,EAApB,KAAK,EAAE;IACM,KAAK,EAAlB,MAAM;IACS,WAAW;IACd,KAAK,EAAjB,KAAK;IACH,MAAM,CAwKlB;AAxOD;;;;;GAKG;AACH,yEAHW,MAAM,GACJ,MAAM,CAsClB;AAgMD;;;;;GAKG;AACH,iEA6GG;AA36CH;;;;;;GAMG;AACH,2CALW,KAAK,EAAE,sCAGL,MAAM,CA2FlB;AAED;;;;;;GAMG;AACH,+EAkBC;AA2CD;;;;;GAKG;AACH,0CAJW,KAAK,GAAC,MAAM,YACZ,MAAM;oBACqB,MAAM,EAAE;GAgG7C;AA8qCD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CAoClB;AAED;;;;;GAKG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AA3hDD;;;;GAIG;AACH,gEAFa,MAAM,CAclB;AAvGD;;;;;;;;;;;;;;;;GAgBG;AACH,gCAfW,MAAM,SACN,MAAM,oUAYJ,UAAQ,CAqEpB;AAiSD;;;;;GAKG;AACH,8CAJW,MAAM,SACN,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAKC;AAxJ/B;;;;;;GAMG;AACH,0CALW,KAAK,EAAE,mCAGL,QAAQ,MAAM,CAAC,CAkC3B;AAywCD;;;;GAIG;AAEH,kCAJW,MAAM,GACJ,MAAM,GAAC,SAAS,CAM5B;AAwLD;;;;;;GAMG;AACH,yDALW,MAAM,GAGJ,YAAU,CAiBtB;AA3HD;;;;;;GAMG;AACH,8EAHW,MAAM,EAAE,GACN,MAAM,CA8FlB"}
1
+ {"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"AAsnBA;;;;;;GAMG;AACH,6FALW,KAAK,GAAC,MAAM,GAGV,QAAQ,MAAM,EAAE,CAAC,CAojB7B;AA+FD;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,UACR,KAAK,EAAE,gBAGL,MAAM,CAyJlB;AA7PD;;;;;;;GAOG;AACH,uCALW,KAAK,GAAC,MAAM,YACZ,MAAM,sBAEJ,QAAQ,MAAM,EAAE,CAAC,CAiC7B;AAED;;;;;;GAMG;AACH,wCAJW,KAAK,GAAC,MAAM,YACZ,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAoB7B;AA0QD;;;;;;;;GAQG;AACH;IANyB,MAAM,EAApB,KAAK,EAAE;IACM,KAAK,EAAlB,MAAM;IACS,WAAW;IACd,KAAK,EAAjB,KAAK;IACH,MAAM,CAqMlB;AAzRD;;;;;GAKG;AACH,yEAHW,MAAM,GACJ,MAAM,CAsClB;AAiPD;;;;;GAKG;AACH,iEA6GG;AArrDH;;;;;;GAMG;AACH,2CALW,KAAK,EAAE,sCAGL,MAAM,CA2FlB;AAED;;;;;;GAMG;AACH,+EAkBC;AAiOD;;;;;GAKG;AACH,0CAJW,KAAK,GAAC,MAAM,YACZ,MAAM;oBACqB,MAAM,EAAE;GAgI7C;AAkuCD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CAoClB;AAED;;;;;GAKG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AA3yDD;;;;GAIG;AACH,gEAFa,MAAM,CAoBlB;AA7GD;;;;;;;;;;;;;;;;GAgBG;AACH,gCAfW,MAAM,SACN,MAAM,oUAYJ,UAAQ,CAqEpB;AA6fD;;;;;GAKG;AACH,8CAJW,MAAM,SACN,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAKC;AA9W/B;;;;;;GAMG;AACH,0CALW,KAAK,EAAE,mCAGL,QAAQ,MAAM,CAAC,CAkC3B;AAmhDD;;;;GAIG;AAEH,kCAJW,MAAM,GACJ,MAAM,GAAC,SAAS,CAM5B;AA2LD;;;;;;GAMG;AACH,yDALW,MAAM,GAGJ,YAAU,CAiBtB;AA9HD;;;;;;GAMG;AACH,8EAHW,MAAM,EAAE,GACN,MAAM,CAiGlB;;AAloDD;;;;;GAKG;AACH,kDAJW,KAAK,YACL,MAAM,kBA0DhB;AAED;;;;;;;GAOG;AACH,uDAJW,KAAK,YACL,MAAM;;;KA+BhB;AAyjDD;;;;GAIG;AACH,uDAQC"}
@@ -11,7 +11,7 @@ const Trigger = require("./models/trigger");
11
11
  const { getState } = require("./db/state");
12
12
  const db = require("./db");
13
13
  const { button, a, text, i } = require("@saltcorn/markup/tags");
14
- const { applyAsync, InvalidConfiguration } = require("./utils");
14
+ const { applyAsync, InvalidConfiguration, parseRelationPath, buildRelationPath, } = require("./utils");
15
15
  const { jsexprToWhere, freeVariables, add_free_variables_to_joinfields, } = require("./models/expression");
16
16
  const { traverseSync } = require("./models/layout");
17
17
  const { isNode } = require("./utils");
@@ -82,7 +82,11 @@ const stateToQueryString = (state) => {
82
82
  return "";
83
83
  return ("?" +
84
84
  Object.entries(state)
85
- .map(([k, v]) => k === "id" ? null : `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
85
+ .map(([k, v]) => k === "id"
86
+ ? null
87
+ : `${encodeURIComponent(k)}=${encodeURIComponent(k === "_inbound_relation_path_" && typeof v !== "string"
88
+ ? queryToString(v)
89
+ : v)}`)
86
90
  .filter((s) => !!s)
87
91
  .join("&"));
88
92
  };
@@ -233,6 +237,154 @@ const calcfldViewConfig = async (fields, isEdit, nrecurse = 2) => {
233
237
  }
234
238
  return fieldViewConfigForms;
235
239
  };
240
+ /**
241
+ * helper for 'get_inbound_relation_opts'
242
+ * @param {Table} targetTbl table to check for an Inbound relation
243
+ * @param {Table} srcTable table of the top view
244
+ * @param {string[]} levelPath inbound levels already visited
245
+ * @param {*} tableCache helper cache so that we don't have to call Table.findOne() all the time
246
+ * @param {*} fieldCache helper cache so that we don't have to call Field.find() all the time
247
+ * @returns
248
+ */
249
+ const get_inbound_path_suffixes = async (targetTbl, srcTable, levelPath, tableCache, fieldCache) => {
250
+ const result = [];
251
+ // fks from targetTbl
252
+ for (const fkToRelTbl of targetTbl.getForeignKeys()) {
253
+ const relTblName = fkToRelTbl.reftable_name;
254
+ if (relTblName === srcTable.name)
255
+ continue;
256
+ // inbounds to the target of fk
257
+ const inboundFks = fieldCache[relTblName]
258
+ ? fieldCache[relTblName].filter((field) => field.table_id !== targetTbl.id &&
259
+ !levelPath.find((val) => val.tbl === targetTbl.name && val.fk === fkToRelTbl.name))
260
+ : [];
261
+ for (const inboundFk of inboundFks) {
262
+ const inboundTable = tableCache[inboundFk.table_id];
263
+ if (inboundTable) {
264
+ const relTblRefs = inboundTable
265
+ .getForeignKeys()
266
+ .filter((f) => f.reftable_name === relTblName);
267
+ // the inbound comes from 'srcTable'
268
+ if (inboundTable.id === srcTable.id) {
269
+ const levels = levelPath.map((val) => val.fk).join(".");
270
+ for (const inboundRelTblKey of relTblRefs) {
271
+ const newSuffix = `.${srcTable.name}.${inboundRelTblKey.name}.${targetTbl.name}$${fkToRelTbl.name}${levels ? `.${levels}` : ""}`;
272
+ if (result.indexOf(newSuffix) === -1) {
273
+ result.push(newSuffix);
274
+ }
275
+ }
276
+ }
277
+ else {
278
+ // check if there are refs to 'srcTable'
279
+ const srcRefs = inboundTable
280
+ .getForeignKeys()
281
+ .filter((f) => f.reftable_name === srcTable.name);
282
+ for (const srcTblRef of srcRefs) {
283
+ for (const relTblRef of relTblRefs) {
284
+ if (levelPath.length > 0) {
285
+ let levels = `${levelPath[0].tbl}$${fkToRelTbl.name}`;
286
+ for (let i = 0; i < levelPath.length; i++) {
287
+ levels = `${levels}.${levelPath[i].fk}`;
288
+ }
289
+ const newSuffix = `.${srcTable.name}.${inboundTable.name}$${srcTblRef.name}.${relTblRef.name}.` +
290
+ `${levels}`;
291
+ if (result.indexOf(newSuffix) === -1) {
292
+ result.push(newSuffix);
293
+ }
294
+ }
295
+ else {
296
+ const newSuffix = `.${srcTable.name}.${inboundTable.name}$${srcTblRef.name}.${relTblRef.name}.${targetTbl.name}$${fkToRelTbl.name}`;
297
+ if (result.indexOf(newSuffix) === -1) {
298
+ result.push(newSuffix);
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ return result;
308
+ };
309
+ /**
310
+ * search for relations where an in select to source is possible
311
+ * @param {Table} source
312
+ * @param {string} viewname
313
+ * @returns
314
+ */
315
+ const get_inbound_relation_opts = async (source, viewname) => {
316
+ const tableCache = {};
317
+ for (const table of await Table.find()) {
318
+ tableCache[table.id] = table;
319
+ }
320
+ const fieldCache = {};
321
+ for (const field of await Field.find()) {
322
+ if (field.reftable_name) {
323
+ if (!fieldCache[field.reftable_name])
324
+ fieldCache[field.reftable_name] = [];
325
+ fieldCache[field.reftable_name].push(field);
326
+ }
327
+ }
328
+ const result = [];
329
+ const search = async (table, path, rootTable, visited) => {
330
+ const visitedCopy = new Set(visited);
331
+ const suffixes = await get_inbound_path_suffixes(table, source, path, tableCache, fieldCache);
332
+ if (suffixes.length > 0) {
333
+ const views = await View.find_table_views_where(rootTable.id, ({ state_fields, viewrow }) => viewrow.name !== viewname &&
334
+ !state_fields.some((sf) => sf.name === "id"));
335
+ for (const suffix of suffixes) {
336
+ result.push({ path: suffix, views });
337
+ }
338
+ }
339
+ if (!visitedCopy.has(table.name)) {
340
+ visitedCopy.add(table.name);
341
+ for (const inboundFk of fieldCache[table.name] || []) {
342
+ if (inboundFk.table_id === table.id)
343
+ continue;
344
+ const inboundTbl = tableCache[inboundFk.table_id];
345
+ await search(inboundTbl, [{ tbl: inboundTbl.name, fk: inboundFk.name }, ...path], rootTable, visitedCopy);
346
+ }
347
+ }
348
+ };
349
+ // search in reverse,
350
+ // start with the target (table of the subview) to the relation source
351
+ for (const table of await Table.find()) {
352
+ const visited = new Set();
353
+ await search(table, [], table, visited);
354
+ }
355
+ return result;
356
+ };
357
+ /**
358
+ * Get all relation options where source has a key to another table (refTable)
359
+ * and refTable has a key to source.
360
+ * Otherwise one could use a OneToOneShow from refTable.
361
+ * @param {Table} source
362
+ * @param {string} viewname name of the topview
363
+ * @returns viewnames mapped to arrays of Inbound options
364
+ */
365
+ const get_inbound_self_relation_opts = async (source, viewname) => {
366
+ const fields = await Field.find({
367
+ reftable_name: source.name,
368
+ is_unique: true,
369
+ });
370
+ const result = [];
371
+ const targetFields = source.getForeignKeys();
372
+ for (const field of fields) {
373
+ const refTable = Table.findOne({ id: field.table_id });
374
+ const fromTargetToRef = targetFields.filter((field) => field.reftable_name === refTable.name);
375
+ if (fromTargetToRef.length > 0) {
376
+ const views = await View.find_table_views_where(source, ({ state_fields, viewrow }) => viewrow.name !== viewname &&
377
+ state_fields.some((sf) => sf.name === "id"));
378
+ for (const toRef of fromTargetToRef) {
379
+ result.push({
380
+ path: `.${source.name}.${toRef.name}.${field.name}`,
381
+ views,
382
+ });
383
+ }
384
+ }
385
+ }
386
+ return result;
387
+ };
236
388
  /**
237
389
  * @function
238
390
  * @param {Table|object} table
@@ -250,6 +402,7 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
250
402
  const view_name_opts = all_views.filter(accept).map((v) => ({
251
403
  label: `${v.name} [${v.viewtemplate} ${table_id_to_name[v.table_id] || ""}]`,
252
404
  name: v.name,
405
+ table: table_id_to_name[v.table_id] || "",
253
406
  }));
254
407
  const view_relation_opts = {};
255
408
  const link_view_opts = [];
@@ -267,15 +420,20 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
267
420
  relation: table.name,
268
421
  });
269
422
  });
270
- const link_view_opts_push = (o) => {
423
+ const link_view_opts_push_legacy = (o) => {
271
424
  if (!link_view_opts.map((v) => v.name).includes(o.name))
272
425
  push_view_option(o);
273
426
  };
427
+ const link_view_opts_push = (o) => {
428
+ if (!view_relation_opts[o.view] ||
429
+ !view_relation_opts[o.view].find(({ value }) => value === o.name))
430
+ push_view_option(o);
431
+ };
274
432
  const child_views = await get_child_views(table, viewname);
275
433
  for (const { relation, related_table, through, throughTable, views, } of child_views) {
276
434
  for (const view of views) {
277
435
  if (through && throughTable) {
278
- link_view_opts_push({
436
+ link_view_opts_push_legacy({
279
437
  view: view.name,
280
438
  name: `ChildList:${view.name}.${throughTable.name}.${through.name}.${related_table.name}.${relation.name}`,
281
439
  label: `${view.name} [${view.viewtemplate} ${related_table.name}.${relation.name}.${through.name}]`,
@@ -283,7 +441,7 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
283
441
  });
284
442
  }
285
443
  else {
286
- link_view_opts_push({
444
+ link_view_opts_push_legacy({
287
445
  view: view.name,
288
446
  name: `ChildList:${view.name}.${related_table.name}.${relation.name}`,
289
447
  label: `${view.name} [${view.viewtemplate} ${related_table.name}.${relation.name}]`,
@@ -295,7 +453,7 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
295
453
  const parent_views = await get_parent_views(table, viewname);
296
454
  for (const { relation, related_table, views } of parent_views) {
297
455
  for (const view of views) {
298
- link_view_opts_push({
456
+ link_view_opts_push_legacy({
299
457
  view: view.name,
300
458
  name: `ParentShow:${view.name}.${related_table.name}.${relation.name}`,
301
459
  label: `${view.name} [${view.viewtemplate} ${relation.name}.${related_table.name}]`,
@@ -306,7 +464,7 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
306
464
  const onetoone_views = await get_onetoone_views(table, viewname);
307
465
  for (const { relation, related_table, views } of onetoone_views) {
308
466
  for (const view of views) {
309
- link_view_opts_push({
467
+ link_view_opts_push_legacy({
310
468
  view: view.name,
311
469
  name: `OneToOneShow:${view.name}.${related_table.name}.${relation.name}`,
312
470
  label: `${view.name} [${view.viewtemplate} ${related_table.name}.${relation.label}]`,
@@ -316,13 +474,35 @@ const get_link_view_opts = async (table, viewname, accept = () => true) => {
316
474
  }
317
475
  const independent_views = await View.find_all_views_where(({ state_fields }) => !state_fields.some((sf) => sf.required));
318
476
  independent_views.forEach((view) => {
319
- link_view_opts_push({
477
+ link_view_opts_push_legacy({
320
478
  view: view.name,
321
479
  label: `${view.name} [${view.viewtemplate}]`,
322
480
  name: `Independent:${view.name}`,
323
481
  relation: "None",
324
482
  });
325
483
  });
484
+ const inbound_rel_opts = await get_inbound_relation_opts(table, viewname);
485
+ for (const { path, views } of inbound_rel_opts) {
486
+ for (const view of views) {
487
+ link_view_opts_push({
488
+ view: view.name,
489
+ label: `${view.name} [${view.viewtemplate} ${table.name}]`,
490
+ name: path,
491
+ relation: path,
492
+ });
493
+ }
494
+ }
495
+ const self_inbounds = await get_inbound_self_relation_opts(table, viewname);
496
+ for (const { path, views } of self_inbounds) {
497
+ for (const view of views) {
498
+ link_view_opts_push({
499
+ view: view.name,
500
+ label: `${view.name} [${view.viewtemplate} ${table.name}]`,
501
+ name: path,
502
+ relation: path,
503
+ });
504
+ }
505
+ }
326
506
  return { link_view_opts, view_name_opts, view_relation_opts };
327
507
  };
328
508
  /**
@@ -392,7 +572,10 @@ const field_picker_fields = async ({ table, viewname, req, has_click_to_edit, ha
392
572
  actionConfigFields.push(cfgFld);
393
573
  }
394
574
  }
395
- const fldOptions = fields.map((f) => f.name);
575
+ const fldOptions = fields.map((f) => ({
576
+ label: `${f.name} [${f.pretty_type}]`,
577
+ name: f.name,
578
+ }));
396
579
  const { field_view_options } = calcfldViewOptions(fields, "list");
397
580
  const rel_field_view_options = await calcrelViewOptions(table, "list");
398
581
  const fieldViewConfigForms = await calcfldViewConfig(fields, false);
@@ -1168,16 +1351,36 @@ const stateFieldsToQuery = ({ state, stateHash, fields, prefix = "" }) => {
1168
1351
  */
1169
1352
  // todo potentially move to utils
1170
1353
  const addOrCreateList = (container, key, x) => {
1171
- if (container[key])
1172
- container[key].push(x);
1354
+ if (container[key]) {
1355
+ if (container[key].length)
1356
+ container[key].push(x);
1357
+ else
1358
+ container[key] = [container[key], x];
1359
+ }
1173
1360
  else
1174
1361
  container[key] = [x];
1175
1362
  };
1363
+ const stringToQuery = (s) => {
1364
+ const json = JSON.parse(s);
1365
+ const { path, sourcetable } = parseRelationPath(json.relation);
1366
+ return {
1367
+ ...json,
1368
+ path,
1369
+ sourcetable,
1370
+ };
1371
+ };
1372
+ const queryToString = (query) => {
1373
+ const relObj = {
1374
+ srcId: query.srcId,
1375
+ relation: buildRelationPath(query.sourcetable, query.path),
1376
+ };
1377
+ return JSON.stringify(relObj);
1378
+ };
1176
1379
  /**
1177
1380
  * @function
1178
1381
  * @param {object} opts
1179
1382
  * @param {Field[]} opts.fields
1180
- * @param {object} opts.state missing in contract
1383
+ * @param {object} opts.state
1181
1384
  * @param {boolean} [opts.approximate = true]
1182
1385
  * @param {Table} opts.table
1183
1386
  * @returns {object}
@@ -1185,7 +1388,7 @@ const addOrCreateList = (container, key, x) => {
1185
1388
  const stateFieldsToWhere = ({ fields, state, approximate = true, table }) => {
1186
1389
  let qstate = {};
1187
1390
  Object.entries(state || {}).forEach(([k, v]) => {
1188
- if (k === "_fts" || (table?.name && k === `_fts_${table.name}`)) {
1391
+ if (k === "_fts" || (table?.name && k === `_fts_${table.santized_name}`)) {
1189
1392
  qstate["_fts"] = {
1190
1393
  searchTerm: v.replace(/\0/g, ""),
1191
1394
  fields,
@@ -1194,7 +1397,35 @@ const stateFieldsToWhere = ({ fields, state, approximate = true, table }) => {
1194
1397
  return;
1195
1398
  }
1196
1399
  const field = fields.find((fld) => fld.name === k);
1197
- if (k.startsWith("_fromdate_")) {
1400
+ if (k === "_inbound_relation_path_") {
1401
+ const queryObj = typeof v === "string" ? stringToQuery(v) : v;
1402
+ const levels = [];
1403
+ let lastTableName = queryObj.sourcetable;
1404
+ let where = null;
1405
+ for (const level of queryObj.path) {
1406
+ if (level.inboundKey) {
1407
+ levels.push({ ...level });
1408
+ lastTableName = level.table;
1409
+ if (!where)
1410
+ where = { [db.sqlsanitize(level.inboundKey)]: queryObj.srcId };
1411
+ }
1412
+ else {
1413
+ const lastTable = Table.findOne({ name: lastTableName });
1414
+ const refField = lastTable.fields.find((field) => field.name === level.fkey);
1415
+ levels.push({ table: refField.reftable_name, fkey: level.fkey });
1416
+ lastTableName = refField.reftable_name;
1417
+ if (!where)
1418
+ where = { id: queryObj.srcId };
1419
+ }
1420
+ }
1421
+ addOrCreateList(qstate, "id", {
1422
+ inSelectWithLevels: {
1423
+ joinLevels: levels,
1424
+ where,
1425
+ },
1426
+ });
1427
+ }
1428
+ else if (k.startsWith("_fromdate_")) {
1198
1429
  const datefield = db.sqlsanitize(k.replace("_fromdate_", ""));
1199
1430
  const dfield = fields.find((fld) => fld.name === datefield);
1200
1431
  if (dfield)
@@ -1221,6 +1452,9 @@ const stateFieldsToWhere = ({ fields, state, approximate = true, table }) => {
1221
1452
  else if (field && field.type.name === "String" && v && v.slugify) {
1222
1453
  qstate[k] = v;
1223
1454
  }
1455
+ else if (Array.isArray(v) && field && field.type && field.type.read) {
1456
+ qstate[k] = { or: v.map(field.type.read) };
1457
+ }
1224
1458
  else if (field &&
1225
1459
  field.type.name === "String" &&
1226
1460
  !(field.attributes && field.attributes.options) &&
@@ -1456,7 +1690,7 @@ const initial_config_all_fields = (isEdit) => async ({ table_id, exttable_name }
1456
1690
  aboves.push({
1457
1691
  type: "action",
1458
1692
  block: false,
1459
- minRole: 10,
1693
+ minRole: 100,
1460
1694
  action_name: "Save",
1461
1695
  });
1462
1696
  cfg.layout = { above: aboves };
@@ -1603,6 +1837,9 @@ const json_list_to_external_table = (get_json_list, fields0) => {
1603
1837
  getFields() {
1604
1838
  return fields;
1605
1839
  },
1840
+ getForeignKeys() {
1841
+ return fields.filter((f) => f.is_fkey && f.type !== "File");
1842
+ },
1606
1843
  getField(fnm) {
1607
1844
  return fields.find((f) => f.name === fnm);
1608
1845
  },
@@ -1610,7 +1847,7 @@ const json_list_to_external_table = (get_json_list, fields0) => {
1610
1847
  getRows,
1611
1848
  get min_role_read() {
1612
1849
  const roles = getState().getConfig("exttables_min_role_read", {});
1613
- return roles[tbl.name] || 10;
1850
+ return roles[tbl.name] || 100;
1614
1851
  },
1615
1852
  getJoinedRows(opts = {}) {
1616
1853
  const { where, ...rest } = opts;
@@ -1677,6 +1914,20 @@ const run_action_column = async ({ col, req, ...rest }) => {
1677
1914
  ...rest,
1678
1915
  });
1679
1916
  };
1917
+ /**
1918
+ * for all tables collect the foreign keys with the targets
1919
+ * should only be used as options for the saltcorn-builder
1920
+ * @returns table names as key and the fks as value
1921
+ */
1922
+ const build_schema_fk_options = async () => {
1923
+ const result = {};
1924
+ for (const table of await Table.find()) {
1925
+ result[table.name] = table.getForeignKeys().map((field) => {
1926
+ return { name: field.name, reftable_name: field.reftable_name };
1927
+ });
1928
+ }
1929
+ return result;
1930
+ };
1680
1931
  module.exports = {
1681
1932
  field_picker_fields,
1682
1933
  picked_fields_to_query,
@@ -1698,5 +1949,8 @@ module.exports = {
1698
1949
  run_action_column,
1699
1950
  json_list_to_external_table,
1700
1951
  add_free_variables_to_joinfields,
1952
+ get_inbound_relation_opts,
1953
+ get_inbound_self_relation_opts,
1954
+ build_schema_fk_options,
1701
1955
  };
1702
1956
  //# sourceMappingURL=plugin-helper.js.map