@saltcorn/data 1.3.1-beta.9 → 1.3.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 +5 -5
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +1 -1
- 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.map +1 -1
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +26 -24
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +5 -4
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +10 -2
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +6 -4
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +53 -13
- 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.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts.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 +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +42 -4
- 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.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts.map +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/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +4 -4
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +73 -9
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js.map +1 -1
- package/dist/db/fixtures.d.ts.map +1 -1
- package/dist/db/fixtures.js +14 -1
- package/dist/db/fixtures.js.map +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/reset_schema.d.ts.map +1 -1
- package/dist/db/reset_schema.js.map +1 -1
- package/dist/db/state.d.ts +13 -4
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +155 -17
- package/dist/db/state.js.map +1 -1
- package/dist/diagram/cy_generate_utils.js +2 -3
- package/dist/diagram/cy_generate_utils.js.map +1 -1
- package/dist/diagram/cy_raster.js.map +1 -1
- package/dist/diagram/node_extract_utils.js +4 -5
- package/dist/diagram/node_extract_utils.js.map +1 -1
- package/dist/diagram/nodes/table_node.js.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js.map +1 -1
- package/dist/migrations/202007091707.d.ts.map +1 -1
- package/dist/migrations/202007202144.d.ts.map +1 -1
- package/dist/migrations/202008031500.d.ts.map +1 -1
- package/dist/migrations/202009221105.d.ts.map +1 -1
- package/dist/migrations/202009231331.d.ts.map +1 -1
- package/dist/migrations/202010231444.d.ts.map +1 -1
- package/dist/migrations/202011021749.d.ts.map +1 -1
- package/dist/migrations/202012011203.d.ts.map +1 -1
- package/dist/migrations/202012100841.d.ts.map +1 -1
- package/dist/migrations/202012281835.d.ts.map +1 -1
- package/dist/migrations/202101061051.d.ts.map +1 -1
- package/dist/migrations/202101141128.d.ts.map +1 -1
- package/dist/migrations/202102091312.d.ts.map +1 -1
- package/dist/migrations/202102091312.js.map +1 -1
- package/dist/migrations/202102172148.d.ts.map +1 -1
- package/dist/migrations/202106102347.d.ts.map +1 -1
- package/dist/migrations/202106112120.d.ts.map +1 -1
- package/dist/migrations/202106120012.d.ts.map +1 -1
- package/dist/migrations/202106120220.d.ts.map +1 -1
- package/dist/migrations/202106121701.d.ts.map +1 -1
- package/dist/migrations/202107281619.d.ts.map +1 -1
- package/dist/migrations/202109201624.d.ts.map +1 -1
- package/dist/migrations/202207022002.d.ts.map +1 -1
- package/dist/migrations/202210051058.js.map +1 -1
- package/dist/migrations/202210101540.js.map +1 -1
- package/dist/migrations/202301130917.d.ts.map +1 -1
- package/dist/migrations/202304281224.js.map +1 -1
- package/dist/migrations/202307211459.js.map +1 -1
- package/dist/migrations/202308211648.d.ts.map +1 -1
- package/dist/migrations/202402071125.d.ts.map +1 -1
- package/dist/migrations/202501081226.d.ts.map +1 -1
- package/dist/migrations/202502131103.js.map +1 -1
- package/dist/migrations/202503071353.d.ts.map +1 -1
- package/dist/mobile-mocks/node/child_process.d.ts.map +1 -1
- package/dist/mobile-mocks/node/fs/promises.js +5 -6
- package/dist/mobile-mocks/node/fs/promises.js.map +1 -1
- package/dist/mobile-mocks/node/fs.js +3 -4
- package/dist/mobile-mocks/node/fs.js.map +1 -1
- package/dist/mobile-mocks/node/latest-version.js +1 -1
- package/dist/mobile-mocks/node/latest-version.js.map +1 -1
- package/dist/mobile-mocks/node/v8.js +2 -3
- package/dist/mobile-mocks/node/v8.js.map +1 -1
- package/dist/model-helper.d.ts +2 -2
- package/dist/model-helper.js.map +1 -1
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +28 -16
- package/dist/models/config.js.map +1 -1
- package/dist/models/crash.js +17 -7
- package/dist/models/crash.js.map +1 -1
- package/dist/models/discovery.d.ts +6 -5
- package/dist/models/discovery.d.ts.map +1 -1
- package/dist/models/discovery.js +14 -12
- package/dist/models/discovery.js.map +1 -1
- package/dist/models/email.d.ts +5 -5
- package/dist/models/email.d.ts.map +1 -1
- package/dist/models/email.js +17 -7
- package/dist/models/email.js.map +1 -1
- package/dist/models/eventlog.js.map +1 -1
- package/dist/models/expression.d.ts +8 -2
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +21 -20
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.js.map +1 -1
- package/dist/models/fieldrepeat.js.map +1 -1
- package/dist/models/file.d.ts +0 -1
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js.map +1 -1
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts +26 -19
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/internal/async_json_stream.js +1 -1
- package/dist/models/internal/async_json_stream.js.map +1 -1
- package/dist/models/internal/push_message_helper.js.map +1 -1
- package/dist/models/internal/query.d.ts +21 -2
- package/dist/models/internal/query.d.ts.map +1 -1
- package/dist/models/internal/query.js +44 -1
- package/dist/models/internal/query.js.map +1 -1
- package/dist/models/internal/table_helper.d.ts.map +1 -1
- package/dist/models/internal/table_helper.js.map +1 -1
- package/dist/models/layout.d.ts +2 -2
- package/dist/models/layout.d.ts.map +1 -1
- package/dist/models/layout.js.map +1 -1
- package/dist/models/model.d.ts.map +1 -1
- package/dist/models/model.js.map +1 -1
- package/dist/models/model_instance.d.ts +0 -1
- package/dist/models/model_instance.d.ts.map +1 -1
- package/dist/models/model_instance.js +17 -7
- package/dist/models/model_instance.js.map +1 -1
- package/dist/models/notification.js.map +1 -1
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +60 -23
- package/dist/models/page.js.map +1 -1
- package/dist/models/page_group.js +17 -7
- package/dist/models/page_group.js.map +1 -1
- package/dist/models/page_group_member.js.map +1 -1
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/random.d.ts.map +1 -1
- package/dist/models/random.js.map +1 -1
- package/dist/models/scheduler.d.ts +10 -3
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +19 -48
- package/dist/models/table.js.map +1 -1
- package/dist/models/table_constraints.js.map +1 -1
- package/dist/models/tag.js.map +1 -1
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +22 -8
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.d.ts +5 -0
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +26 -7
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow.js +17 -7
- package/dist/models/workflow.js.map +1 -1
- package/dist/models/workflow_run.js +17 -7
- package/dist/models/workflow_run.js.map +1 -1
- package/dist/models/workflow_step.js.map +1 -1
- package/dist/plugin-helper.d.ts +10 -2
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +69 -5
- package/dist/plugin-helper.js.map +1 -1
- package/dist/plugin-testing.d.ts +1 -1
- package/dist/plugin-testing.d.ts.map +1 -1
- package/dist/plugin-testing.js.map +1 -1
- package/dist/standard-menu.d.ts.map +1 -1
- package/dist/standard-menu.js +10 -10
- package/dist/standard-menu.js.map +1 -1
- package/dist/tests/actions.test.js +19 -7
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/assertions.js +6 -7
- package/dist/tests/assertions.js.map +1 -1
- package/dist/tests/auth.test.js.map +1 -1
- package/dist/tests/auxtest.test.js +19 -1
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/calc.test.js +11 -1
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/common_helpers.js +7 -8
- package/dist/tests/common_helpers.js.map +1 -1
- package/dist/tests/db.test.js.map +1 -1
- package/dist/tests/discover.test.js.map +1 -1
- package/dist/tests/exact_views.test.js +183 -15
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/field.test.js +11 -9
- package/dist/tests/field.test.js.map +1 -1
- package/dist/tests/fieldviews.test.js.map +1 -1
- package/dist/tests/file.test.js.map +1 -1
- package/dist/tests/mocks.d.ts.map +1 -1
- package/dist/tests/mocks.js.map +1 -1
- package/dist/tests/page_group.test.js.map +1 -1
- package/dist/tests/remote_query_helper.d.ts.map +1 -1
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/table_history.test.js.map +1 -1
- package/dist/tests/tag.test.js.map +1 -1
- package/dist/tests/user.test.js.map +1 -1
- package/dist/tests/view.test.js +1 -1
- package/dist/tests/view.test.js.map +1 -1
- package/dist/tests/workflow.test.js +3 -0
- package/dist/tests/workflow.test.js.map +1 -1
- package/dist/translate.d.ts.map +1 -1
- package/dist/utils.d.ts +8 -8
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/web-mobile-commons.d.ts +1 -1
- package/dist/web-mobile-commons.d.ts.map +1 -1
- package/dist/web-mobile-commons.js +18 -2
- package/dist/web-mobile-commons.js.map +1 -1
- package/package.json +11 -11
|
@@ -31,7 +31,7 @@ export function run(table_id: number, viewname: string, cfg: any, state: string,
|
|
|
31
31
|
* @param {object} extra
|
|
32
32
|
* @returns {Promise<Form[]>}
|
|
33
33
|
*/
|
|
34
|
-
export function runMany(table_id: number, viewname: string, { columns, layout, auto_save, split_paste, confirm_leave }: {
|
|
34
|
+
export function runMany(table_id: number, viewname: string, { columns, layout, auto_save, split_paste, confirm_leave, enable_realtime, update_events, }: {
|
|
35
35
|
columns: any;
|
|
36
36
|
layout: any;
|
|
37
37
|
}, state: State, extra: object, { editManyQuery, getRowQuery, optionsQuery }: {
|
|
@@ -110,8 +110,9 @@ export function authorise_post({ body, table_id, req }: {
|
|
|
110
110
|
}, { authorizePostQuery }: {
|
|
111
111
|
authorizePostQuery: any;
|
|
112
112
|
}): Promise<boolean>;
|
|
113
|
-
export function virtual_triggers(table_id: any, viewname: any, { enable_realtime }: {
|
|
113
|
+
export function virtual_triggers(table_id: any, viewname: any, { enable_realtime, update_events }: {
|
|
114
114
|
enable_realtime: any;
|
|
115
|
+
update_events: any;
|
|
115
116
|
}): {
|
|
116
117
|
when_trigger: string;
|
|
117
118
|
table_id: any;
|
|
@@ -172,7 +173,7 @@ export declare let name: string;
|
|
|
172
173
|
export declare let description: string;
|
|
173
174
|
export declare function authorise_get({ query, table_id, req }: {
|
|
174
175
|
query: object;
|
|
175
|
-
rest: any;
|
|
176
|
+
rest: any[];
|
|
176
177
|
}, { authorizeGetQuery }: {
|
|
177
178
|
authorizeGetQuery: any;
|
|
178
179
|
}): Promise<boolean>;
|
|
@@ -184,7 +185,7 @@ export declare function authorise_get({ query, table_id, req }: {
|
|
|
184
185
|
export declare function getStringsForI18n({ layout }: {
|
|
185
186
|
layout: Layout;
|
|
186
187
|
}): string[];
|
|
187
|
-
export declare function queries({ table_id, name, configuration: { columns, default_state, layout, auto_save, split_paste, destination_type, fixed, confirm_leave, auto_create, delete_unchanged_auto_create, enable_realtime, }, req, res, }: {
|
|
188
|
+
export declare function queries({ table_id, name, configuration: { columns, default_state, layout, auto_save, split_paste, destination_type, fixed, confirm_leave, auto_create, delete_unchanged_auto_create, enable_realtime, update_events, }, req, res, }: {
|
|
188
189
|
table_id: any;
|
|
189
190
|
name: any;
|
|
190
191
|
configuration: {
|
|
@@ -199,6 +200,7 @@ export declare function queries({ table_id, name, configuration: { columns, defa
|
|
|
199
200
|
auto_create: any;
|
|
200
201
|
delete_unchanged_auto_create: any;
|
|
201
202
|
enable_realtime: any;
|
|
203
|
+
update_events: any;
|
|
202
204
|
};
|
|
203
205
|
req: any;
|
|
204
206
|
res: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../base-plugin/viewtemplates/edit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../base-plugin/viewtemplates/edit.js"],"names":[],"mappings":"AA+FA;;;GAGG;AAEH,4CAJW,MAAM,GACJ,QAAQ,CA4YjB;AA+CJ;;;;;;;;;;;GAWG;AACH,8BAXW,MAAM,YACN,MAAM,mBAIN,MAAM,4CAEd;IAAwB,GAAG,EAAnB,MAAM;IACU,GAAG,EAAnB,MAAM;CACd;;IAAU,OAAO,CAAC,IAAI,CAAC,CAYzB;AAED;;;;;;;;;GASG;AACH,kCATW,MAAM,YACN,MAAM,+FAEd;IAAgB,OAAO,EAAf,GAAC;IACO,MAAM,EAAd,GAAC;CACT,SAAQ,KAAK,SACL,MAAM;;;;IACJ,OAAO,CAAC,IAAI,EAAE,CAAC,CAoD3B;AAwsBD;;;;;;;;;;;;;;;;GAgBG;AACH,kCAhBW,MAAM,YACN,MAAM,0JAEd;IAA0B,OAAO,EAAzB,MAAM,EAAE;IACQ,MAAM,EAAtB,MAAM;IACU,KAAK,EAArB,MAAM;IACW,cAAc,EAA/B,OAAO;IACW,oBAAoB,EAAtC,MAAM,EAAE;CAChB,SAAQ,MAAM,QACN,GAAC,0BAET;IAAwB,GAAG,EAAnB,MAAM;IACU,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;CACd;;;;;;;;iBAAU,OAAO,CAAC,IAAI,CAAC,CAmUzB;AA0FD,mKA6BC;AAGD,sHA6BC;AAlzCD;;;;;;GAMG;AACH,2CANW,GAAC,YACD,GAAC,eAET;IAAgB,OAAO,EAAf,GAAC;CACT,GAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ7B;AA6BD,uBAAuB;AACvB,sCAAuD;AA8uDvD;;;;;;iBAwGC;AA1pBD;;;;;;GAMG;AACH,wDALG;IAAqB,IAAI,EAAjB,MAAM;IACO,QAAQ,EAArB,MAAM;IACO,GAAG,EAAhB,MAAM;CACd;;IAAU,OAAO,CAAC,OAAO,CAAC,CAO5B;AAgpBD;;;;;;;;;;IAmEC;;;;AAlpBD;;;;;;;;;;;GAWG;AACH,sCAXW,MAAM,YACN,GAAC,uBAET;IAAuB,OAAO,EAAtB,MAAM,EAAE;IACA,MAAM,EAAd,GAAC;CACT,QAAQ,GAAC,gBAET;IAAwB,GAAG,EAAnB,MAAM;IACK,GAAG,EAAd,GAAC;CACT;;IAAU,OAAO,CAAC,MAAM,CAAC,CAe3B;AAED;;;;;;;;;;;;;;;;;;;;;;kBA0GC;;yBAghBY,MAAM;gCAEN,MAAM;AAmBF,gEAJZ;IAAqB,KAAK,EAAlB,MAAM;IACK,IAAI,EAAZ,GAAC,EAAA;CACZ;;IAAU,OAAO,CAAC,OAAO,CAAC,CAI5B;AACD;;;;GAIG;AACH,sDAHG;IAAqB,MAAM,EAAnB,MAAM;CACd,GAAU,MAAM,EAAE,CAIpB;AACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqcP;;;;;AAEF,yGAkBC;AACY;;;GA2DZ;AACiB,6HAEjB"}
|
|
@@ -23,7 +23,7 @@ const { get_expression_function, expressionChecker, eval_expression, freeVariabl
|
|
|
23
23
|
const { InvalidConfiguration, isNode, isWeb, isTest, mergeIntoWhere, dollarizeObject, getSessionId, interpolate, asyncMap, removeEmptyStrings, } = require("../../utils");
|
|
24
24
|
const Library = require("../../models/library");
|
|
25
25
|
const { check_view_columns } = require("../../plugin-testing");
|
|
26
|
-
const { initial_config_all_fields, calcfldViewOptions, calcfldViewConfig, get_parent_views, picked_fields_to_query, stateFieldsToWhere, stateFieldsToQuery, getActionConfigFields, run_action_column, add_free_variables_to_joinfields, readState, stateToQueryString, pathToState, displayType, } = require("../../plugin-helper");
|
|
26
|
+
const { initial_config_all_fields, calcfldViewOptions, calcfldViewConfig, get_parent_views, picked_fields_to_query, stateFieldsToWhere, stateFieldsToQuery, getActionConfigFields, run_action_column, add_free_variables_to_joinfields, readState, stateToQueryString, pathToState, displayType, runCollabEvents, } = require("../../plugin-helper");
|
|
27
27
|
const { splitUniques, getForm, fill_presets, parse_view_select, get_view_link_query, objToQueryString, action_url, action_link, view_linker, edit_build_in_actions, } = require("./viewable_fields");
|
|
28
28
|
const { traverse, getStringsForI18n, translateLayout, traverseSync, splitLayoutContainerFields, findLayoutBranchWith, } = require("../../models/layout");
|
|
29
29
|
const { extractFromLayout } = require("../../diagram/node_extract_utils");
|
|
@@ -239,6 +239,7 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
239
239
|
}));
|
|
240
240
|
const pages = await Page.find();
|
|
241
241
|
const groups = await PageGroup.find();
|
|
242
|
+
const triggers = Trigger.find();
|
|
242
243
|
return new Form({
|
|
243
244
|
fields: [
|
|
244
245
|
{
|
|
@@ -280,6 +281,21 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
280
281
|
type: "Bool",
|
|
281
282
|
default: false,
|
|
282
283
|
},
|
|
284
|
+
new FieldRepeat({
|
|
285
|
+
name: "update_events",
|
|
286
|
+
showIf: { enable_realtime: true },
|
|
287
|
+
fields: [
|
|
288
|
+
{
|
|
289
|
+
type: "String",
|
|
290
|
+
name: "event",
|
|
291
|
+
label: req.__("Update event"),
|
|
292
|
+
sublabel: req.__("Custom event for real-time updates"),
|
|
293
|
+
attributes: {
|
|
294
|
+
options: triggers.map((t) => t.name),
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
}),
|
|
283
299
|
{
|
|
284
300
|
name: "destination_type",
|
|
285
301
|
label: "Destination type",
|
|
@@ -432,7 +448,7 @@ const run = async (table_id, viewname, cfg, state, { res, req, isPreview, hidden
|
|
|
432
448
|
* @param {object} extra
|
|
433
449
|
* @returns {Promise<Form[]>}
|
|
434
450
|
*/
|
|
435
|
-
const runMany = async (table_id, viewname, { columns, layout, auto_save, split_paste, confirm_leave }, state, extra, { editManyQuery, getRowQuery, optionsQuery }) => {
|
|
451
|
+
const runMany = async (table_id, viewname, { columns, layout, auto_save, split_paste, confirm_leave, enable_realtime, update_events, }, state, extra, { editManyQuery, getRowQuery, optionsQuery }) => {
|
|
436
452
|
let { table, fields, rows } = await editManyQuery(state, {
|
|
437
453
|
limit: extra.limit,
|
|
438
454
|
offset: extra.offset,
|
|
@@ -462,6 +478,8 @@ const runMany = async (table_id, viewname, { columns, layout, auto_save, split_p
|
|
|
462
478
|
split_paste,
|
|
463
479
|
isRemote,
|
|
464
480
|
confirm_leave,
|
|
481
|
+
enable_realtime,
|
|
482
|
+
update_events,
|
|
465
483
|
});
|
|
466
484
|
return { html, row };
|
|
467
485
|
});
|
|
@@ -767,22 +785,33 @@ const transformForm = async ({ form, table, req, row, res, getRowQuery, viewname
|
|
|
767
785
|
form.xhrSubmit = true;
|
|
768
786
|
setDateLocales(form, req.getLocale());
|
|
769
787
|
};
|
|
770
|
-
const realTimeScript = (viewname, table_id, row) => {
|
|
788
|
+
const realTimeScript = (viewname, table_id, row, scriptId) => {
|
|
771
789
|
const view = View.findOne({ name: viewname });
|
|
772
790
|
const table = Table.findOne({ id: table_id });
|
|
773
791
|
const rowId = row[table.pk_name];
|
|
774
792
|
return `
|
|
775
793
|
const collabCfg = {
|
|
776
794
|
events: {
|
|
777
|
-
'${view.getRealTimeEventName(`UPDATE_EVENT?id=${rowId}`)}': (data) => {
|
|
795
|
+
'${view.getRealTimeEventName(`UPDATE_EVENT?id=${rowId}`)}': async (data) => {
|
|
778
796
|
console.log("Update event received for view ${viewname}", data);
|
|
797
|
+
const script = document.getElementById('${scriptId}');
|
|
798
|
+
const closestDiv = script?.closest(
|
|
799
|
+
'div[data-sc-embed-viewname="${viewname}"]'
|
|
800
|
+
);
|
|
779
801
|
if (data.updates) {
|
|
780
|
-
common_done({set_fields: data.updates, no_onchange: true},
|
|
802
|
+
if (closestDiv) await common_done({set_fields: data.updates, no_onchange: true}, closestDiv);
|
|
803
|
+
else await common_done({set_fields: data.updates, no_onchange: true}, "${viewname}");
|
|
804
|
+
}
|
|
805
|
+
if (data.actions) {
|
|
806
|
+
for (const action of data.actions) {
|
|
807
|
+
if (closestDiv) await common_done(action, closestDiv);
|
|
808
|
+
else await common_done(action, "${viewname}");
|
|
809
|
+
}
|
|
781
810
|
}
|
|
782
811
|
}
|
|
783
812
|
}
|
|
784
813
|
};
|
|
785
|
-
init_collab_room('${viewname}', collabCfg)
|
|
814
|
+
init_collab_room('${viewname}', collabCfg);`.trim();
|
|
786
815
|
};
|
|
787
816
|
/**
|
|
788
817
|
* @param {object} opts
|
|
@@ -943,12 +972,16 @@ const render = async ({ table, fields, viewname, columns, layout, row, req, stat
|
|
|
943
972
|
: `form${Math.floor(Math.random() * 16777215).toString(16)}`;
|
|
944
973
|
const identicalFieldsScript = script(domReady(`const editForm = document.getElementById('${formId}'); if (editForm) editForm.addEventListener("change", handle_identical_fields, true);`));
|
|
945
974
|
const dynamic_updates_enabled = getState().getConfig("enable_dynamic_updates", true);
|
|
975
|
+
const rndid = isTest()
|
|
976
|
+
? "test-script-id"
|
|
977
|
+
: Math.floor(Math.random() * 16777215).toString(16);
|
|
946
978
|
const realTimeCollabScript = enable_realtime && row && !(req.headers?.pjaxpageload === "true")
|
|
947
979
|
? (!dynamic_updates_enabled
|
|
948
980
|
? script({
|
|
949
981
|
src: `/static_assets/${db.connectObj.version_tag}/socket.io.min.js`,
|
|
950
982
|
})
|
|
951
|
-
: "") +
|
|
983
|
+
: "") +
|
|
984
|
+
script({ id: rndid }, domReady(realTimeScript(viewname, table.id, row, rndid)))
|
|
952
985
|
: "";
|
|
953
986
|
if (actually_auto_save) {
|
|
954
987
|
for (const field of form.fields) {
|
|
@@ -1763,7 +1796,7 @@ const createBasicView = async ({ table, viewname, template_view, template_table,
|
|
|
1763
1796
|
cfg.split_paste = template_view.configuration.split_paste;
|
|
1764
1797
|
return cfg;
|
|
1765
1798
|
};
|
|
1766
|
-
const virtual_triggers = (table_id, viewname, { enable_realtime }) => {
|
|
1799
|
+
const virtual_triggers = (table_id, viewname, { enable_realtime, update_events }) => {
|
|
1767
1800
|
if (!enable_realtime)
|
|
1768
1801
|
return [];
|
|
1769
1802
|
const table = Table.findOne({ id: table_id });
|
|
@@ -1799,15 +1832,21 @@ const virtual_triggers = (table_id, viewname, { enable_realtime }) => {
|
|
|
1799
1832
|
}
|
|
1800
1833
|
else {
|
|
1801
1834
|
// build and emit updates
|
|
1802
|
-
const
|
|
1835
|
+
const updates = {};
|
|
1803
1836
|
for (const fieldName of changedLayoutFields) {
|
|
1804
1837
|
const newVal = row[fieldName];
|
|
1805
|
-
|
|
1838
|
+
updates[fieldName] = newVal;
|
|
1806
1839
|
}
|
|
1807
1840
|
const rowId = row[table.pk_name];
|
|
1808
|
-
|
|
1841
|
+
const actionResults = await runCollabEvents(update_events, user, {
|
|
1842
|
+
new_row: row,
|
|
1843
|
+
old_row: old_row,
|
|
1844
|
+
updates: updates,
|
|
1845
|
+
});
|
|
1846
|
+
getState().log(6, "Emitting real-time update for row", rowId, updates);
|
|
1809
1847
|
view.emitRealTimeEvent(`UPDATE_EVENT?id=${rowId}`, {
|
|
1810
|
-
updates:
|
|
1848
|
+
updates: updates,
|
|
1849
|
+
actions: actionResults,
|
|
1811
1850
|
});
|
|
1812
1851
|
}
|
|
1813
1852
|
},
|
|
@@ -1847,7 +1886,7 @@ module.exports = {
|
|
|
1847
1886
|
getStringsForI18n({ layout }) {
|
|
1848
1887
|
return getStringsForI18n(layout);
|
|
1849
1888
|
},
|
|
1850
|
-
queries: ({ table_id, name, configuration: { columns, default_state, layout, auto_save, split_paste, destination_type, fixed, confirm_leave, auto_create, delete_unchanged_auto_create, enable_realtime, }, req, res, }) => ({
|
|
1889
|
+
queries: ({ table_id, name, configuration: { columns, default_state, layout, auto_save, split_paste, destination_type, fixed, confirm_leave, auto_create, delete_unchanged_auto_create, enable_realtime, update_events, }, req, res, }) => ({
|
|
1851
1890
|
async editQuery(state, mobileReferrer, isPreview, hiddenLoginDest) {
|
|
1852
1891
|
const table = Table.findOne({ id: table_id });
|
|
1853
1892
|
const fields = table.getFields();
|
|
@@ -1929,6 +1968,7 @@ module.exports = {
|
|
|
1929
1968
|
auto_created_row,
|
|
1930
1969
|
hiddenLoginDest,
|
|
1931
1970
|
enable_realtime,
|
|
1971
|
+
update_events,
|
|
1932
1972
|
});
|
|
1933
1973
|
},
|
|
1934
1974
|
async editManyQuery(state, { limit, offset, orderBy, orderDesc, where }) {
|