@saltcorn/data 1.6.0-beta.1 → 1.6.0-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.
- package/dist/base-plugin/actions.d.ts +191 -62
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +164 -66
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fieldviews.d.ts +1 -0
- package/dist/base-plugin/fieldviews.d.ts.map +1 -1
- package/dist/base-plugin/fieldviews.js +5 -2
- package/dist/base-plugin/fieldviews.js.map +1 -1
- package/dist/base-plugin/fileviews.d.ts +6 -0
- package/dist/base-plugin/fileviews.d.ts.map +1 -1
- package/dist/base-plugin/fileviews.js +14 -0
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +210 -65
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +19 -9
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +41 -12
- 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 +12 -11
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.js +1 -1
- package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +2 -2
- 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 +14 -1
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/room.js +1 -1
- package/dist/base-plugin/viewtemplates/room.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/db/fixtures.d.ts.map +1 -1
- package/dist/db/fixtures.js +31 -1
- package/dist/db/fixtures.js.map +1 -1
- package/dist/db/state.d.ts +5 -3
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +36 -12
- package/dist/db/state.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +3 -1
- package/dist/migrate.js.map +1 -1
- package/dist/migrations/202604091531.d.ts +2 -0
- package/dist/migrations/202604091531.d.ts.map +1 -0
- package/dist/migrations/202604091531.js +9 -0
- package/dist/migrations/202604091531.js.map +1 -0
- package/dist/migrations/202604111200.d.ts +2 -0
- package/dist/migrations/202604111200.d.ts.map +1 -0
- package/dist/migrations/202604111200.js +15 -0
- package/dist/migrations/202604111200.js.map +1 -0
- package/dist/migrations/202604141200.d.ts +2 -0
- package/dist/migrations/202604141200.d.ts.map +1 -0
- package/dist/migrations/202604141200.js +14 -0
- package/dist/migrations/202604141200.js.map +1 -0
- package/dist/mobile-mocks/node/fs/promises.d.ts +1 -0
- package/dist/mobile-mocks/node/fs/promises.d.ts.map +1 -1
- package/dist/mobile-mocks/node/fs/promises.js +4 -0
- package/dist/mobile-mocks/node/fs/promises.js.map +1 -1
- package/dist/mobile-mocks/node/fs.d.ts +2 -0
- package/dist/mobile-mocks/node/fs.d.ts.map +1 -1
- package/dist/mobile-mocks/node/fs.js +36 -0
- package/dist/mobile-mocks/node/fs.js.map +1 -1
- package/dist/mobile-mocks/npm/npm-registry-fetch.d.ts +3 -0
- package/dist/mobile-mocks/npm/npm-registry-fetch.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/npm-registry-fetch.js +3 -0
- package/dist/mobile-mocks/npm/npm-registry-fetch.js.map +1 -0
- package/dist/mobile-mocks/saltcorn/admin-models-tenant.d.ts +1 -0
- package/dist/mobile-mocks/saltcorn/admin-models-tenant.d.ts.map +1 -0
- package/dist/mobile-mocks/saltcorn/admin-models-tenant.js +2 -0
- package/dist/mobile-mocks/saltcorn/admin-models-tenant.js.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-plugin-installer.d.ts +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-plugin-installer.d.ts.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-plugin-installer.js +2 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-plugin-installer.js.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-stable-versioning.d.ts +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-stable-versioning.d.ts.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-stable-versioning.js +2 -0
- package/dist/mobile-mocks/saltcorn/plugins-loader-stable-versioning.js.map +1 -0
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +46 -1
- package/dist/models/config.js.map +1 -1
- package/dist/models/discovery.d.ts +14 -0
- package/dist/models/discovery.d.ts.map +1 -1
- package/dist/models/discovery.js +63 -0
- package/dist/models/discovery.js.map +1 -1
- package/dist/models/expression.d.ts +7 -4
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +28 -14
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +39 -9
- package/dist/models/field.js.map +1 -1
- package/dist/models/index.d.ts +12 -2
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/page.d.ts +1 -0
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +36 -20
- package/dist/models/page.js.map +1 -1
- package/dist/models/plugin.d.ts +57 -0
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +322 -1
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +15 -5
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +3 -1
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +148 -44
- package/dist/models/table.js.map +1 -1
- package/dist/models/trigger.d.ts +3 -1
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +18 -4
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +2 -1
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.d.ts +1 -0
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +74 -14
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow_run.d.ts.map +1 -1
- package/dist/models/workflow_run.js +3 -2
- package/dist/models/workflow_run.js.map +1 -1
- package/dist/models/workflow_step.d.ts +1 -1
- package/dist/models/workflow_step.d.ts.map +1 -1
- package/dist/models/workflow_step.js +2 -1
- package/dist/models/workflow_step.js.map +1 -1
- package/dist/plugin-helper.d.ts +3 -11
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +102 -60
- package/dist/plugin-helper.js.map +1 -1
- package/dist/standard-menu.d.ts.map +1 -1
- package/dist/standard-menu.js +19 -0
- package/dist/standard-menu.js.map +1 -1
- package/dist/tests/remote_query_helper.js +1 -1
- package/dist/tests/remote_query_helper.js.map +1 -1
- package/dist/utils.d.ts +15 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +102 -5
- package/dist/utils.js.map +1 -1
- package/dist/viewable_fields.d.ts +1 -1
- package/dist/viewable_fields.d.ts.map +1 -1
- package/dist/viewable_fields.js +48 -9
- package/dist/viewable_fields.js.map +1 -1
- package/dist/web-mobile-commons.d.ts.map +1 -1
- package/dist/web-mobile-commons.js +2 -1
- package/dist/web-mobile-commons.js.map +1 -1
- package/package.json +12 -9
- package/webpack.config.js +11 -0
|
@@ -62,11 +62,13 @@ const emit_to_client = (user) => (data, userIds) => {
|
|
|
62
62
|
}
|
|
63
63
|
const safeIds = Array.isArray(userIds)
|
|
64
64
|
? userIds
|
|
65
|
-
: userIds
|
|
66
|
-
?
|
|
67
|
-
:
|
|
68
|
-
? [
|
|
69
|
-
:
|
|
65
|
+
: userIds === null
|
|
66
|
+
? null
|
|
67
|
+
: userIds
|
|
68
|
+
? [userIds]
|
|
69
|
+
: user?.id
|
|
70
|
+
? [user.id]
|
|
71
|
+
: [];
|
|
70
72
|
state.emitDynamicUpdate(db.getTenantSchema(), data, safeIds);
|
|
71
73
|
};
|
|
72
74
|
/**
|
|
@@ -86,9 +88,10 @@ const run_code = async ({ row, table, channel, configuration, user, ...rest }) =
|
|
|
86
88
|
const { stripTypeScriptTypes } = require("module");
|
|
87
89
|
if (stripTypeScriptTypes)
|
|
88
90
|
stripTypes = stripTypeScriptTypes;
|
|
89
|
-
code = stripTypes(`async () =>{${configuration.code}
|
|
91
|
+
code = stripTypes(`async () =>{${configuration.code}
|
|
92
|
+
}`)
|
|
90
93
|
.replace("async () =>{", "")
|
|
91
|
-
.slice(0, -
|
|
94
|
+
.slice(0, -2);
|
|
92
95
|
}
|
|
93
96
|
catch (e) {
|
|
94
97
|
//console.error("strip error", e);
|
|
@@ -276,28 +279,64 @@ module.exports = {
|
|
|
276
279
|
* @returns {object[]}
|
|
277
280
|
*/
|
|
278
281
|
description: "Emit an event",
|
|
279
|
-
configFields: () =>
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
282
|
+
configFields: async ({ table }) => {
|
|
283
|
+
const evTypes = trigger_1.default.when_options;
|
|
284
|
+
const hasChannel = [];
|
|
285
|
+
const hasTable = [];
|
|
286
|
+
evTypes.forEach((ty) => {
|
|
287
|
+
if (eventlog_1.default.hasChannel(ty))
|
|
288
|
+
hasChannel.push(ty);
|
|
289
|
+
if (eventlog_1.default.hasTable(ty))
|
|
290
|
+
hasTable.push(ty);
|
|
291
|
+
});
|
|
292
|
+
const allTables = await table_1.default.find({}, { cached: true });
|
|
293
|
+
return [
|
|
294
|
+
{
|
|
295
|
+
name: "eventType",
|
|
296
|
+
label: "Event type",
|
|
297
|
+
required: true,
|
|
298
|
+
input_type: "select",
|
|
299
|
+
options: evTypes,
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
name: "channel",
|
|
303
|
+
label: "Channel",
|
|
304
|
+
type: "String",
|
|
305
|
+
showIf: { eventType: hasChannel },
|
|
306
|
+
help: {
|
|
307
|
+
topic: "Event channel and payload",
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
name: "channel",
|
|
312
|
+
label: "Table",
|
|
313
|
+
type: "String",
|
|
314
|
+
showIf: { eventType: hasTable },
|
|
315
|
+
required: true,
|
|
316
|
+
attributes: { options: allTables.map((t) => t.name) },
|
|
317
|
+
help: {
|
|
318
|
+
topic: "Event channel and payload",
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
name: "payload",
|
|
323
|
+
label: "Payload JSON",
|
|
324
|
+
sublabel: `Leave blank to use row from table. <code>user</code> ${table ? `and field variables ` : ""}in scope`,
|
|
325
|
+
input_type: "code",
|
|
326
|
+
attributes: {
|
|
327
|
+
mode: "application/javascript",
|
|
328
|
+
compact: true,
|
|
329
|
+
expression_type: "row",
|
|
330
|
+
table: table?.name,
|
|
331
|
+
nojoins: true,
|
|
332
|
+
user: true,
|
|
333
|
+
},
|
|
334
|
+
help: {
|
|
335
|
+
topic: "Event channel and payload",
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
];
|
|
339
|
+
},
|
|
301
340
|
/**
|
|
302
341
|
* @param {object} opts
|
|
303
342
|
* @param {object} opts.row
|
|
@@ -335,7 +374,7 @@ module.exports = {
|
|
|
335
374
|
{
|
|
336
375
|
name: "where",
|
|
337
376
|
label: "Where",
|
|
338
|
-
sublabel:
|
|
377
|
+
sublabel: `Where-expression for subset of rows to loop over. For example: <code>{status: "Active"}</code>`,
|
|
339
378
|
input_type: "code",
|
|
340
379
|
attributes: {
|
|
341
380
|
mode: "application/javascript",
|
|
@@ -440,7 +479,7 @@ module.exports = {
|
|
|
440
479
|
name: "url",
|
|
441
480
|
label: "URL",
|
|
442
481
|
type: "String",
|
|
443
|
-
sublabel: "Trigger will call specified URL",
|
|
482
|
+
sublabel: "Trigger will call specified URL. Interpolations <code>{{ }}</code> can be used",
|
|
444
483
|
},
|
|
445
484
|
{
|
|
446
485
|
name: "method",
|
|
@@ -452,16 +491,23 @@ module.exports = {
|
|
|
452
491
|
{
|
|
453
492
|
name: "body",
|
|
454
493
|
label: "JSON body",
|
|
455
|
-
sublabel: "Leave blank to use row from table",
|
|
456
|
-
type: "String",
|
|
457
|
-
fieldview: "textarea",
|
|
458
494
|
showIf: { method: ["POST", "PUT", "DELETE", "PATCH"] },
|
|
495
|
+
sublabel: `Leave blank to use row from table.${table ? ` <code>user</code> and field variables in scope` : ""}`,
|
|
496
|
+
input_type: "code",
|
|
497
|
+
attributes: {
|
|
498
|
+
mode: "application/javascript",
|
|
499
|
+
compact: true,
|
|
500
|
+
expression_type: "row",
|
|
501
|
+
table: table?.name,
|
|
502
|
+
nojoins: true,
|
|
503
|
+
user: true,
|
|
504
|
+
},
|
|
459
505
|
},
|
|
460
506
|
{
|
|
461
507
|
name: "authorization",
|
|
462
508
|
label: "Authorization header",
|
|
463
509
|
type: "String",
|
|
464
|
-
sublabel: "For example <code>Bearer xxxx</code>",
|
|
510
|
+
sublabel: "For example <code>Bearer xxxx</code>. Interpolations <code>{{ }}</code> can be used",
|
|
465
511
|
},
|
|
466
512
|
...(field_opts.length
|
|
467
513
|
? [
|
|
@@ -492,7 +538,7 @@ module.exports = {
|
|
|
492
538
|
* @returns {Promise<object>}
|
|
493
539
|
*/
|
|
494
540
|
run: async ({ row, user, table, configuration: { url, body, authorization, response_field, response_var, method, }, }) => {
|
|
495
|
-
let url1 = interpolate(url, row, user, "Webhook URL");
|
|
541
|
+
let url1 = interpolate(url, row || {}, user, "Webhook URL");
|
|
496
542
|
const fetchOpts = {
|
|
497
543
|
method: (method || "post").toLowerCase(),
|
|
498
544
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1084,12 +1130,13 @@ module.exports = {
|
|
|
1084
1130
|
{
|
|
1085
1131
|
name: "where",
|
|
1086
1132
|
label: "Recalculate where",
|
|
1087
|
-
sublabel: "Where-expression for subset of rows to recalculate",
|
|
1133
|
+
sublabel: "Where-expression for subset of rows to recalculate. Example: <code>{manager: id}</code>",
|
|
1088
1134
|
input_type: "code",
|
|
1089
1135
|
attributes: {
|
|
1090
1136
|
mode: "application/javascript",
|
|
1091
1137
|
singleline: true,
|
|
1092
1138
|
expression_type: "query",
|
|
1139
|
+
...(table ? { table: table.name } : {}),
|
|
1093
1140
|
},
|
|
1094
1141
|
},
|
|
1095
1142
|
];
|
|
@@ -1134,7 +1181,7 @@ module.exports = {
|
|
|
1134
1181
|
* @returns {Promise<object[]>}
|
|
1135
1182
|
*/
|
|
1136
1183
|
description: "insert a row into any table, using a formula expression",
|
|
1137
|
-
configFields: async ({ mode }) => {
|
|
1184
|
+
configFields: async ({ mode, table }) => {
|
|
1138
1185
|
const tables = await table_1.default.find({}, { cached: true });
|
|
1139
1186
|
return [
|
|
1140
1187
|
{
|
|
@@ -1148,11 +1195,14 @@ module.exports = {
|
|
|
1148
1195
|
name: "row_expr",
|
|
1149
1196
|
label: "Row expression",
|
|
1150
1197
|
sublabel: "Expression for JavaScript object or array of objects. Example: <code>{first_name: name.split(' ')[0]}</code>",
|
|
1151
|
-
|
|
1152
|
-
fieldview: "textarea",
|
|
1153
|
-
class: "validate-expression",
|
|
1198
|
+
input_type: "code",
|
|
1154
1199
|
attributes: {
|
|
1155
|
-
|
|
1200
|
+
mode: "application/javascript",
|
|
1201
|
+
compact: true,
|
|
1202
|
+
expression_type: "row",
|
|
1203
|
+
table: table?.name,
|
|
1204
|
+
nojoins: true,
|
|
1205
|
+
user: true,
|
|
1156
1206
|
},
|
|
1157
1207
|
},
|
|
1158
1208
|
...(mode === "workflow"
|
|
@@ -1230,7 +1280,7 @@ module.exports = {
|
|
|
1230
1280
|
*/
|
|
1231
1281
|
modify_row: {
|
|
1232
1282
|
description: "Modify the triggering row",
|
|
1233
|
-
configFields: async ({ mode, when_trigger, }) => {
|
|
1283
|
+
configFields: async ({ mode, when_trigger, table, }) => {
|
|
1234
1284
|
return [
|
|
1235
1285
|
{
|
|
1236
1286
|
name: "row_expr",
|
|
@@ -1241,6 +1291,9 @@ module.exports = {
|
|
|
1241
1291
|
mode: "application/javascript",
|
|
1242
1292
|
compact: true,
|
|
1243
1293
|
expression_type: "row",
|
|
1294
|
+
table: table?.name,
|
|
1295
|
+
nojoins: true,
|
|
1296
|
+
user: true,
|
|
1244
1297
|
},
|
|
1245
1298
|
},
|
|
1246
1299
|
...(mode === "edit" ||
|
|
@@ -1331,7 +1384,7 @@ module.exports = {
|
|
|
1331
1384
|
* @returns {Promise<object[]>}
|
|
1332
1385
|
*/
|
|
1333
1386
|
description: "Modify the triggering row",
|
|
1334
|
-
configFields: async ({ mode, when_trigger }) => {
|
|
1387
|
+
configFields: async ({ mode, table, when_trigger }) => {
|
|
1335
1388
|
const tables = await table_1.default.find({}, { cached: true });
|
|
1336
1389
|
return [
|
|
1337
1390
|
...(mode === "workflow"
|
|
@@ -1354,10 +1407,15 @@ module.exports = {
|
|
|
1354
1407
|
{
|
|
1355
1408
|
name: "delete_where",
|
|
1356
1409
|
label: "Delete where",
|
|
1357
|
-
|
|
1410
|
+
input_type: "code",
|
|
1411
|
+
attributes: {
|
|
1412
|
+
mode: "application/javascript",
|
|
1413
|
+
singleline: true,
|
|
1414
|
+
expression_type: "query",
|
|
1415
|
+
...(table ? { table: table.name } : {}),
|
|
1416
|
+
},
|
|
1358
1417
|
sublabel: "Where expression, ex. <code>{manager: id}</code>",
|
|
1359
1418
|
required: true,
|
|
1360
|
-
class: "validate-expression",
|
|
1361
1419
|
showIf: mode === "workflow" ? undefined : { delete_triggering_row: false },
|
|
1362
1420
|
},
|
|
1363
1421
|
];
|
|
@@ -1370,7 +1428,7 @@ module.exports = {
|
|
|
1370
1428
|
await table.deleteRows({ [table.pk_name]: row[table.pk_name] }, user, false, resultCollector);
|
|
1371
1429
|
return resultCollector;
|
|
1372
1430
|
}
|
|
1373
|
-
const where = eval_expression(delete_where, row || {}, user, "
|
|
1431
|
+
const where = eval_expression(delete_where, row || {}, user, "delete_rows where");
|
|
1374
1432
|
const tbl = table_1.default.findOne({ name: table_name });
|
|
1375
1433
|
await tbl.deleteRows(where, user, false, resultCollector);
|
|
1376
1434
|
return resultCollector;
|
|
@@ -1389,7 +1447,7 @@ module.exports = {
|
|
|
1389
1447
|
* @returns {Promise<object[]>}
|
|
1390
1448
|
*/
|
|
1391
1449
|
description: "Navigation action",
|
|
1392
|
-
configFields: async () => {
|
|
1450
|
+
configFields: async ({ table }) => {
|
|
1393
1451
|
const pages = await page_1.default.find({}, { cached: true });
|
|
1394
1452
|
const views = await view_1.default.find({}, { cached: true });
|
|
1395
1453
|
return [
|
|
@@ -1417,6 +1475,7 @@ module.exports = {
|
|
|
1417
1475
|
type: "String",
|
|
1418
1476
|
required: true,
|
|
1419
1477
|
showIf: { nav_action: ["Go to URL", "Popup modal"] },
|
|
1478
|
+
sublabel: "Use interpolations <code>{{ }}</code> to access row variables",
|
|
1420
1479
|
},
|
|
1421
1480
|
{
|
|
1422
1481
|
name: "page",
|
|
@@ -1435,9 +1494,20 @@ module.exports = {
|
|
|
1435
1494
|
{
|
|
1436
1495
|
name: "state_formula",
|
|
1437
1496
|
label: "State",
|
|
1438
|
-
|
|
1439
|
-
|
|
1497
|
+
input_type: "code",
|
|
1498
|
+
attributes: {
|
|
1499
|
+
mode: "application/javascript",
|
|
1500
|
+
singleline: true,
|
|
1501
|
+
expression_type: "query",
|
|
1502
|
+
...(table ? { table: table.name } : {}),
|
|
1503
|
+
},
|
|
1440
1504
|
showIf: { nav_action: ["Go to Page", "Go to View"] },
|
|
1505
|
+
sublabel: `Additional state passed to the page. Example: <code>{id: 5}</code>`,
|
|
1506
|
+
help: {
|
|
1507
|
+
topic: "Extra state formula",
|
|
1508
|
+
context: table ? { srcTable: table.name } : {},
|
|
1509
|
+
dynContext: ["view"],
|
|
1510
|
+
},
|
|
1441
1511
|
},
|
|
1442
1512
|
{
|
|
1443
1513
|
name: "new_tab",
|
|
@@ -1548,18 +1618,26 @@ module.exports = {
|
|
|
1548
1618
|
{
|
|
1549
1619
|
name: "form_action",
|
|
1550
1620
|
label: "Form Action",
|
|
1551
|
-
|
|
1621
|
+
input_type: "select",
|
|
1552
1622
|
required: true,
|
|
1553
1623
|
attributes: {
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
"Submit",
|
|
1557
|
-
"Save",
|
|
1558
|
-
"Reset",
|
|
1559
|
-
"Submit with Ajax",
|
|
1560
|
-
"Ajax Save Form Data",
|
|
1561
|
-
|
|
1624
|
+
explainers: {
|
|
1625
|
+
RequestSubmit: "Validate the form, and submit if no errors, or display errors",
|
|
1626
|
+
Submit: "Submit the form, skipping validation",
|
|
1627
|
+
Save: "Save the form contents on the server, stay on the form page",
|
|
1628
|
+
Reset: "Reset the form to the state it was in at page load time",
|
|
1629
|
+
"Submit with Ajax": "Submit the form with Ajax and follow the set destination if there are no errors",
|
|
1630
|
+
"Ajax Save Form Data": "Submit the form with Ajax and close the open popup ",
|
|
1631
|
+
},
|
|
1562
1632
|
},
|
|
1633
|
+
options: [
|
|
1634
|
+
"RequestSubmit",
|
|
1635
|
+
"Submit",
|
|
1636
|
+
"Save",
|
|
1637
|
+
"Reset",
|
|
1638
|
+
"Submit with Ajax",
|
|
1639
|
+
"Ajax Save Form Data",
|
|
1640
|
+
],
|
|
1563
1641
|
},
|
|
1564
1642
|
],
|
|
1565
1643
|
run: async ({ row, table, user, req, configuration: { form_action }, ...rest }) => {
|
|
@@ -1681,12 +1759,13 @@ module.exports = {
|
|
|
1681
1759
|
label: "Text",
|
|
1682
1760
|
type: "String",
|
|
1683
1761
|
required: true,
|
|
1762
|
+
sublabel: "Interpolations <code>{{ }}</code> can be used",
|
|
1684
1763
|
},
|
|
1685
1764
|
{
|
|
1686
1765
|
name: "title",
|
|
1687
1766
|
label: "Title",
|
|
1688
|
-
sublabel: "Optional",
|
|
1689
1767
|
type: "String",
|
|
1768
|
+
sublabel: "Optional. Interpolations <code>{{ }}</code> can be used",
|
|
1690
1769
|
},
|
|
1691
1770
|
{
|
|
1692
1771
|
name: "remove_delay",
|
|
@@ -1778,6 +1857,7 @@ module.exports = {
|
|
|
1778
1857
|
table: table?.name || undefined,
|
|
1779
1858
|
user: has_user,
|
|
1780
1859
|
workflow: mode === "workflow",
|
|
1860
|
+
nojoins: true,
|
|
1781
1861
|
},
|
|
1782
1862
|
class: `validate-statements strip-types ${mode !== "workflow" ? "enlarge-in-card" : ""}`,
|
|
1783
1863
|
validator(s) {
|
|
@@ -1792,7 +1872,8 @@ module.exports = {
|
|
|
1792
1872
|
}
|
|
1793
1873
|
try {
|
|
1794
1874
|
let AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;
|
|
1795
|
-
AsyncFunction(stripTypes(`async () =>{${s}
|
|
1875
|
+
AsyncFunction(stripTypes(`async () =>{${s}
|
|
1876
|
+
}`));
|
|
1796
1877
|
return true;
|
|
1797
1878
|
}
|
|
1798
1879
|
catch (e) {
|
|
@@ -2168,7 +2249,7 @@ module.exports = {
|
|
|
2168
2249
|
},
|
|
2169
2250
|
reload_embedded_view: {
|
|
2170
2251
|
description: "Reload an embedded view without full page reload",
|
|
2171
|
-
configFields: async () => {
|
|
2252
|
+
configFields: async ({ table }) => {
|
|
2172
2253
|
const views = await view_1.default.find({});
|
|
2173
2254
|
return [
|
|
2174
2255
|
{
|
|
@@ -2182,8 +2263,19 @@ module.exports = {
|
|
|
2182
2263
|
{
|
|
2183
2264
|
name: "new_state_fml",
|
|
2184
2265
|
label: "New state formula",
|
|
2185
|
-
|
|
2186
|
-
|
|
2266
|
+
input_type: "code",
|
|
2267
|
+
attributes: {
|
|
2268
|
+
mode: "application/javascript",
|
|
2269
|
+
singleline: true,
|
|
2270
|
+
expression_type: "row",
|
|
2271
|
+
...(table ? { table: table.name } : {}),
|
|
2272
|
+
},
|
|
2273
|
+
sublabel: `Optional. Updated view state. Example: <code>{id: 5}</code>. Leave blank to keep existing state`,
|
|
2274
|
+
help: {
|
|
2275
|
+
topic: "Extra state formula",
|
|
2276
|
+
context: table ? { srcTable: table.name } : {},
|
|
2277
|
+
dynContext: ["view"],
|
|
2278
|
+
},
|
|
2187
2279
|
},
|
|
2188
2280
|
{
|
|
2189
2281
|
name: "interval",
|
|
@@ -2227,7 +2319,7 @@ module.exports = {
|
|
|
2227
2319
|
type: "String",
|
|
2228
2320
|
class: "validate-identifier",
|
|
2229
2321
|
required: true,
|
|
2230
|
-
sublabel: "A valid JavaScript identifier for updating existing progress toasts",
|
|
2322
|
+
sublabel: "A valid JavaScript identifier for updating existing progress toasts. Interpolations <code>{{ }}</code> can be used",
|
|
2231
2323
|
showIf: { blocking: false },
|
|
2232
2324
|
},
|
|
2233
2325
|
{
|
|
@@ -2248,12 +2340,14 @@ module.exports = {
|
|
|
2248
2340
|
label: "Title",
|
|
2249
2341
|
type: "String",
|
|
2250
2342
|
showIf: { close: false },
|
|
2343
|
+
sublabel: "Use interpolations <code>{{ }}</code> to access row variables",
|
|
2251
2344
|
},
|
|
2252
2345
|
{
|
|
2253
2346
|
name: "message",
|
|
2254
2347
|
label: "Message",
|
|
2255
2348
|
type: "String",
|
|
2256
2349
|
showIf: { close: false },
|
|
2350
|
+
sublabel: "Use interpolations <code>{{ }}</code> to access row variables",
|
|
2257
2351
|
},
|
|
2258
2352
|
{
|
|
2259
2353
|
name: "percent",
|
|
@@ -2325,27 +2419,31 @@ module.exports = {
|
|
|
2325
2419
|
},
|
|
2326
2420
|
notify_user: {
|
|
2327
2421
|
description: "Send a notification to a specific user",
|
|
2328
|
-
configFields: () => [
|
|
2422
|
+
configFields: ({ table }) => [
|
|
2329
2423
|
{
|
|
2330
2424
|
name: "user_spec",
|
|
2331
2425
|
label: "User where or email",
|
|
2332
2426
|
type: "String",
|
|
2427
|
+
sublabel: `Valid input: <code>*</code> for all, a valid email address, or a where object, e.g. <code>{department: "Finance"}</code>${table ? ". Row values are in scope for where object." : ""}`,
|
|
2333
2428
|
},
|
|
2334
2429
|
{
|
|
2335
2430
|
name: "title",
|
|
2336
2431
|
label: "Title",
|
|
2337
2432
|
required: true,
|
|
2338
2433
|
type: "String",
|
|
2434
|
+
sublabel: "<code>{{ }}</code> interpolations usable",
|
|
2339
2435
|
},
|
|
2340
2436
|
{
|
|
2341
2437
|
name: "body",
|
|
2342
2438
|
label: "Body",
|
|
2343
2439
|
type: "String",
|
|
2440
|
+
sublabel: "<code>{{ }}</code> interpolations usable",
|
|
2344
2441
|
},
|
|
2345
2442
|
{
|
|
2346
2443
|
name: "link",
|
|
2347
2444
|
label: "Link",
|
|
2348
2445
|
type: "String",
|
|
2446
|
+
sublabel: "<code>{{ }}</code> interpolations usable",
|
|
2349
2447
|
},
|
|
2350
2448
|
],
|
|
2351
2449
|
/**
|