@saltcorn/data 1.6.0-alpha.1 → 1.6.0-alpha.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 +1850 -1653
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +130 -104
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fieldviews.d.ts +284 -114
- package/dist/base-plugin/fieldviews.d.ts.map +1 -1
- package/dist/base-plugin/fieldviews.js +23 -69
- package/dist/base-plugin/fieldviews.js.map +1 -1
- package/dist/base-plugin/fileviews.d.ts +18 -14
- package/dist/base-plugin/fileviews.d.ts.map +1 -1
- package/dist/base-plugin/fileviews.js +35 -23
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +3369 -1299
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/index.js +39 -25
- package/dist/base-plugin/index.js.map +1 -1
- package/dist/base-plugin/types.d.ts +1438 -1029
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +3 -2
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +133 -257
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +306 -348
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts +30 -81
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.js +37 -30
- package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts +42 -64
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +100 -81
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +40 -118
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +169 -168
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts +65 -49
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.js +33 -58
- package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts +102 -109
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/room.js +53 -50
- package/dist/base-plugin/viewtemplates/room.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts +72 -136
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +86 -181
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +2 -187
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +3 -1898
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.d.ts +37 -61
- package/dist/base-plugin/viewtemplates/workflow-room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.js +42 -65
- package/dist/base-plugin/viewtemplates/workflow-room.js.map +1 -1
- package/dist/contracts.d.ts +4 -48
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +18 -2
- package/dist/contracts.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +20 -2
- package/dist/db/connect.js.map +1 -1
- package/dist/db/fixtures.d.ts +2 -7
- package/dist/db/fixtures.d.ts.map +1 -1
- package/dist/db/fixtures.js +2349 -2352
- package/dist/db/fixtures.js.map +1 -1
- package/dist/db/reset_schema.d.ts +3 -3
- package/dist/db/reset_schema.d.ts.map +1 -1
- package/dist/db/reset_schema.js +10 -10
- package/dist/db/reset_schema.js.map +1 -1
- package/dist/db/state.d.ts +31 -28
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +9 -32
- package/dist/db/state.js.map +1 -1
- package/dist/diagram/node_extract_utils.js +1 -1
- package/dist/diagram/node_extract_utils.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +9 -3
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +26 -20
- package/dist/migrate.js.map +1 -1
- package/dist/mobile-mocks/npm/apns2.d.ts +1 -0
- package/dist/mobile-mocks/npm/apns2.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/apns2.js +2 -0
- package/dist/mobile-mocks/npm/apns2.js.map +1 -0
- package/dist/mobile-mocks/npm/vm2.d.ts +1 -0
- package/dist/mobile-mocks/npm/vm2.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/vm2.js +2 -0
- package/dist/mobile-mocks/npm/vm2.js.map +1 -0
- package/dist/mobile-mocks/npm/xml2js.d.ts +1 -0
- package/dist/mobile-mocks/npm/xml2js.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/xml2js.js +2 -0
- package/dist/mobile-mocks/npm/xml2js.js.map +1 -0
- package/dist/model-helper.d.ts +18 -17
- package/dist/model-helper.d.ts.map +1 -1
- package/dist/model-helper.js +46 -29
- package/dist/model-helper.js.map +1 -1
- package/dist/models/config.d.ts +5 -0
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +32 -0
- package/dist/models/config.js.map +1 -1
- package/dist/models/field.d.ts +1 -1
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +3 -2
- package/dist/models/field.js.map +1 -1
- package/dist/models/file.d.ts +2 -2
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js.map +1 -1
- package/dist/models/form.d.ts +2 -0
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js +2 -1
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts +5 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/internal/push_message_helper.d.ts +63 -24
- package/dist/models/internal/push_message_helper.d.ts.map +1 -1
- package/dist/models/internal/push_message_helper.js +218 -42
- package/dist/models/internal/push_message_helper.js.map +1 -1
- package/dist/models/layout.d.ts +1 -1
- package/dist/models/layout.d.ts.map +1 -1
- package/dist/models/layout.js +12 -0
- package/dist/models/layout.js.map +1 -1
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +28 -1
- package/dist/models/page.js.map +1 -1
- package/dist/models/plugin.d.ts +5 -2
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +15 -1
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/scheduler.js +1 -1
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +13 -4
- package/dist/models/table.js.map +1 -1
- package/dist/models/trigger.d.ts +2 -1
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +3 -1
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/view.js +4 -4
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow_step.d.ts +5 -0
- package/dist/models/workflow_step.d.ts.map +1 -1
- package/dist/models/workflow_step.js +142 -0
- package/dist/models/workflow_step.js.map +1 -1
- package/dist/plugin-helper.d.ts +218 -191
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +259 -192
- package/dist/plugin-helper.js.map +1 -1
- package/dist/plugin-testing.d.ts +6 -6
- package/dist/plugin-testing.d.ts.map +1 -1
- package/dist/plugin-testing.js +66 -31
- package/dist/plugin-testing.js.map +1 -1
- package/dist/standard-menu.d.ts +6 -1
- package/dist/standard-menu.d.ts.map +1 -1
- package/dist/standard-menu.js +20 -0
- package/dist/standard-menu.js.map +1 -1
- package/dist/tests/actions.test.js +76 -0
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/auth.test.js +34 -0
- package/dist/tests/auth.test.js.map +1 -1
- package/dist/tests/auxtest.test.js +6 -0
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/calc.test.js +1 -1
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/edit.test.js +2 -2
- package/dist/tests/edit.test.js.map +1 -1
- package/dist/tests/exact_views.test.js +4 -4
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/form.test.js +65 -0
- package/dist/tests/form.test.js.map +1 -1
- package/dist/tests/user.test.js +52 -1
- package/dist/tests/user.test.js.map +1 -1
- package/dist/tests/workflow_run.test.js +96 -0
- package/dist/tests/workflow_run.test.js.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +69 -5
- package/dist/utils.js.map +1 -1
- package/dist/viewable_fields.d.ts +151 -96
- package/dist/viewable_fields.d.ts.map +1 -1
- package/dist/viewable_fields.js +452 -91
- package/dist/viewable_fields.js.map +1 -1
- package/dist/web-mobile-commons.d.ts +1 -2
- package/dist/web-mobile-commons.d.ts.map +1 -1
- package/dist/web-mobile-commons.js +4 -4
- package/dist/web-mobile-commons.js.map +1 -1
- package/package.json +12 -9
- package/webpack.config.js +3 -0
- package/dist/models/s3_helpers.d.ts +0 -54
- package/dist/models/s3_helpers.d.ts.map +0 -1
- package/dist/models/s3_helpers.js +0 -505
- package/dist/models/s3_helpers.js.map +0 -1
- package/dist/test-utils/mocks.d.ts +0 -203
- package/dist/test-utils/mocks.d.ts.map +0 -1
- package/dist/test-utils/mocks.js +0 -329
- package/dist/test-utils/mocks.js.map +0 -1
- package/dist/tests/mail_queue.test.d.ts +0 -2
- package/dist/tests/mail_queue.test.d.ts.map +0 -1
- package/dist/tests/mail_queue.test.js +0 -122
- package/dist/tests/mail_queue.test.js.map +0 -1
- package/dist/tests/table_sync_info.test.d.ts +0 -2
- package/dist/tests/table_sync_info.test.d.ts.map +0 -1
- package/dist/tests/table_sync_info.test.js +0 -62
- package/dist/tests/table_sync_info.test.js.map +0 -1
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
/**
|
|
3
6
|
* @category saltcorn-data
|
|
4
7
|
* @module base-plugin/viewtemplates/filter
|
|
5
8
|
* @subcategory base-plugin
|
|
6
9
|
*/
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
10
|
+
const table_1 = __importDefault(require("../../models/table"));
|
|
11
|
+
const view_1 = __importDefault(require("../../models/view"));
|
|
12
|
+
const field_1 = __importDefault(require("../../models/field"));
|
|
13
|
+
const workflow_1 = __importDefault(require("../../models/workflow"));
|
|
14
|
+
const trigger_1 = __importDefault(require("../../models/trigger"));
|
|
15
|
+
const user_1 = __importDefault(require("../../models/user"));
|
|
16
|
+
const page_1 = __importDefault(require("../../models/page"));
|
|
17
|
+
const crash_1 = __importDefault(require("../../models/crash"));
|
|
18
|
+
const tags_1 = require("@saltcorn/markup/tags");
|
|
16
19
|
const renderLayout = require("@saltcorn/markup/layout");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
20
|
+
const plugin_helper_1 = require("../../plugin-helper");
|
|
21
|
+
const viewable_fields_1 = require("../../viewable_fields");
|
|
19
22
|
const { search_bar } = require("@saltcorn/markup/helpers");
|
|
20
23
|
const { eachView, translateLayout, getStringsForI18n, traverse, } = require("../../models/layout");
|
|
21
24
|
const { InvalidConfiguration, objectToQueryString, removeEmptyStrings, asyncMap, getSessionId, mergeIntoWhere, isWeb, renderServerSide, } = require("../../utils");
|
|
@@ -27,12 +30,12 @@ const db = require("../../db/index");
|
|
|
27
30
|
/**
|
|
28
31
|
* @returns {Workflow}
|
|
29
32
|
*/
|
|
30
|
-
const configuration_workflow = (req) => new
|
|
33
|
+
const configuration_workflow = (req) => new workflow_1.default({
|
|
31
34
|
steps: [
|
|
32
35
|
{
|
|
33
36
|
name: "Layout",
|
|
34
37
|
builder: async (context) => {
|
|
35
|
-
const table =
|
|
38
|
+
const table = table_1.default.findOne(context.table_id || context.exttable_name);
|
|
36
39
|
const fields = [...table.getFields()];
|
|
37
40
|
const { child_field_list, child_relations } = await table.get_child_relations();
|
|
38
41
|
const { parent_field_list } = await table.get_parent_relations(true);
|
|
@@ -50,7 +53,7 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
50
53
|
const jfld = fields.find((f) => f.name === jFieldNm);
|
|
51
54
|
if (!jfld)
|
|
52
55
|
return;
|
|
53
|
-
const throughTable =
|
|
56
|
+
const throughTable = table_1.default.findOne({
|
|
54
57
|
name: jfld.reftable_name,
|
|
55
58
|
});
|
|
56
59
|
const throughFld = throughTable.fields.find((f) => f.name === throughField);
|
|
@@ -58,12 +61,12 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
58
61
|
}
|
|
59
62
|
})
|
|
60
63
|
.filter((f) => f);
|
|
61
|
-
const roles = await
|
|
64
|
+
const roles = await user_1.default.get_roles();
|
|
62
65
|
for (const cr of child_relations) {
|
|
63
66
|
const cfields = await cr.table.getFields();
|
|
64
67
|
cfields.forEach((cf) => {
|
|
65
68
|
if (cf.name !== cr.key_field.name)
|
|
66
|
-
fields.push(new
|
|
69
|
+
fields.push(new field_1.default({
|
|
67
70
|
...cf,
|
|
68
71
|
label: `${cr.table.name}.${cr.key_field.name}→${cf.name}`,
|
|
69
72
|
name: `${cr.table.name}.${cr.key_field.name}.${cf.name}`,
|
|
@@ -72,14 +75,14 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
72
75
|
}
|
|
73
76
|
const stateActions = Object.entries(getState().actions).filter(([k, v]) => !v.disableInBuilder && !v.disableIf?.());
|
|
74
77
|
const actions1 = ["Clear", ...stateActions.map(([k, v]) => k)];
|
|
75
|
-
const actions =
|
|
78
|
+
const actions = trigger_1.default.action_options({
|
|
76
79
|
tableTriggers: table.id,
|
|
77
80
|
apiNeverTriggers: true,
|
|
78
81
|
forBuilder: true,
|
|
79
82
|
builtInLabel: "Filter Actions",
|
|
80
83
|
builtIns: ["Clear"],
|
|
81
84
|
});
|
|
82
|
-
const triggerActions =
|
|
85
|
+
const triggerActions = trigger_1.default.trigger_actions({
|
|
83
86
|
tableTriggers: table.id,
|
|
84
87
|
apiNeverTriggers: true,
|
|
85
88
|
});
|
|
@@ -101,10 +104,25 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
101
104
|
};
|
|
102
105
|
for (const [name, action] of stateActions) {
|
|
103
106
|
if (action.configFields) {
|
|
104
|
-
actionConfigForms[name] = await getActionConfigFields(action, table, { mode: "filter", req });
|
|
107
|
+
actionConfigForms[name] = await (0, plugin_helper_1.getActionConfigFields)(action, table, { mode: "filter", req });
|
|
105
108
|
}
|
|
106
109
|
}
|
|
107
|
-
const
|
|
110
|
+
const workflowActions = trigger_1.default.trigger_actions({
|
|
111
|
+
tableTriggers: table.id,
|
|
112
|
+
apiNeverTriggers: true,
|
|
113
|
+
onlyWorkflows: true,
|
|
114
|
+
});
|
|
115
|
+
for (const name of workflowActions) {
|
|
116
|
+
actionConfigForms[name] = [
|
|
117
|
+
{
|
|
118
|
+
name: "initial_context",
|
|
119
|
+
label: "Additional context",
|
|
120
|
+
type: "String",
|
|
121
|
+
class: "validate-expression",
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
const own_link_views = await view_1.default.find_table_views_where(context.table_id || context.exttable_name, ({ viewrow }) => viewrow.name !== context.viewname);
|
|
108
126
|
const own_view_names = new Set();
|
|
109
127
|
const views = own_link_views.map((v) => {
|
|
110
128
|
own_view_names.add(v.name);
|
|
@@ -114,7 +132,7 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
114
132
|
viewtemplate: v.viewtemplate,
|
|
115
133
|
};
|
|
116
134
|
});
|
|
117
|
-
const all_views = await
|
|
135
|
+
const all_views = await view_1.default.find({}, { cached: true });
|
|
118
136
|
for (const v of all_views) {
|
|
119
137
|
if (!own_view_names.has(v.name)) {
|
|
120
138
|
views.push({
|
|
@@ -130,15 +148,15 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
130
148
|
}
|
|
131
149
|
const library = (await Library.find({})).filter((l) => l.suitableFor("filter"));
|
|
132
150
|
//const fieldViewConfigForms = await calcfldViewConfig(fields, false);
|
|
133
|
-
const { field_view_options, handlesTextStyle } = calcfldViewOptions(fields, "filter");
|
|
134
|
-
const pages = await
|
|
151
|
+
const { field_view_options, handlesTextStyle } = (0, plugin_helper_1.calcfldViewOptions)(fields, "filter");
|
|
152
|
+
const pages = await page_1.default.find();
|
|
135
153
|
var agg_field_opts = {};
|
|
136
154
|
agg_field_opts[table.name] = table.fields
|
|
137
155
|
.filter((f) => !f.calculated || f.stored)
|
|
138
156
|
.map((f) => ({
|
|
139
157
|
name: f.name,
|
|
140
158
|
label: f.label,
|
|
141
|
-
ftype: f.type
|
|
159
|
+
ftype: f.type?.name || f.type,
|
|
142
160
|
table_name: table.name,
|
|
143
161
|
table_id: table.id,
|
|
144
162
|
}));
|
|
@@ -199,9 +217,9 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
199
217
|
//console.log(layout);
|
|
200
218
|
if (!columns || !layout)
|
|
201
219
|
return "View not yet built";
|
|
202
|
-
const table =
|
|
220
|
+
const table = table_1.default.findOne(table_id);
|
|
203
221
|
const fields = table.getFields();
|
|
204
|
-
readState(state, fields);
|
|
222
|
+
(0, plugin_helper_1.readState)(state, fields);
|
|
205
223
|
const formFieldNames = (columns || [])
|
|
206
224
|
.map((c) => c.field_name)
|
|
207
225
|
.filter((n) => n);
|
|
@@ -218,8 +236,8 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
218
236
|
showv = realv.label;
|
|
219
237
|
}
|
|
220
238
|
badges.push({
|
|
221
|
-
text: `${text_attr(k)}:${text_attr(showv)}`,
|
|
222
|
-
onclick: `unset_state_field('${text_attr(k)}', this)`,
|
|
239
|
+
text: `${(0, tags_1.text_attr)(k)}:${(0, tags_1.text_attr)(showv)}`,
|
|
240
|
+
onclick: `unset_state_field('${(0, tags_1.text_attr)(k)}', this)`,
|
|
223
241
|
});
|
|
224
242
|
}
|
|
225
243
|
});
|
|
@@ -233,7 +251,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
233
251
|
await traverse(layout, {
|
|
234
252
|
aggregation: async (segment) => {
|
|
235
253
|
const { stat, agg_field, agg_fieldview, aggwhere } = segment;
|
|
236
|
-
const where = stateFieldsToWhere({ fields, state, table, prefix: "a." });
|
|
254
|
+
const where = (0, plugin_helper_1.stateFieldsToWhere)({ fields, state, table, prefix: "a." });
|
|
237
255
|
if (aggwhere) {
|
|
238
256
|
const ctx = {
|
|
239
257
|
...state,
|
|
@@ -256,7 +274,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
256
274
|
const fld = table.getField(agg_field);
|
|
257
275
|
segment.type = "blank";
|
|
258
276
|
if (stat.toLowerCase() === "array_agg" && Array.isArray(val))
|
|
259
|
-
segment.contents = val.map((v) => text(v.toString())).join(", ");
|
|
277
|
+
segment.contents = val.map((v) => (0, tags_1.text)(v.toString())).join(", ");
|
|
260
278
|
else if (agg_fieldview) {
|
|
261
279
|
const outcomeType = stat === "Percent true" || stat === "Percent false"
|
|
262
280
|
? "Float"
|
|
@@ -270,7 +288,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
270
288
|
}
|
|
271
289
|
}
|
|
272
290
|
else
|
|
273
|
-
segment.contents = text(val);
|
|
291
|
+
segment.contents = (0, tags_1.text)(val);
|
|
274
292
|
},
|
|
275
293
|
field: async (segment) => {
|
|
276
294
|
const { field_name, fieldview, configuration } = segment;
|
|
@@ -280,7 +298,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
280
298
|
const kpath = field_name.split(".");
|
|
281
299
|
if (kpath.length === 3) {
|
|
282
300
|
const [jtNm, jFieldNm, lblField] = kpath;
|
|
283
|
-
const jtable =
|
|
301
|
+
const jtable = table_1.default.findOne({ name: jtNm });
|
|
284
302
|
if (!jtable)
|
|
285
303
|
throw new InvalidConfiguration(`View ${viewname} incorrectly configured: cannot find join table ${jtNm}`);
|
|
286
304
|
const jfields = jtable.fields;
|
|
@@ -347,7 +365,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
347
365
|
if (extra?.isPreview)
|
|
348
366
|
return;
|
|
349
367
|
try {
|
|
350
|
-
const actionResult = await run_action_column({
|
|
368
|
+
const actionResult = await (0, plugin_helper_1.run_action_column)({
|
|
351
369
|
col: { ...segment },
|
|
352
370
|
referrer: extra.req?.get?.("Referrer"),
|
|
353
371
|
req: extra.req,
|
|
@@ -361,19 +379,19 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
361
379
|
});
|
|
362
380
|
}
|
|
363
381
|
if (actionResult)
|
|
364
|
-
segment.contents = script(domReady(`common_done(${JSON.stringify(actionResult)}, "${viewname}")`));
|
|
382
|
+
segment.contents = (0, tags_1.script)((0, tags_1.domReady)(`common_done(${JSON.stringify(actionResult)}, "${viewname}")`));
|
|
365
383
|
else
|
|
366
384
|
segment.contents = "";
|
|
367
385
|
}
|
|
368
386
|
catch (e) {
|
|
369
387
|
segment.contents = "";
|
|
370
|
-
|
|
388
|
+
crash_1.default.create(e, extra.req);
|
|
371
389
|
}
|
|
372
390
|
}
|
|
373
391
|
},
|
|
374
392
|
});
|
|
375
393
|
await eachView(layout, async (segment, inLazy) => {
|
|
376
|
-
const view = await
|
|
394
|
+
const view = await view_1.default.findOne({ name: segment.view });
|
|
377
395
|
if (!view)
|
|
378
396
|
throw new InvalidConfiguration(`View ${viewname} incorrectly configured: cannot find view ${segment.view}`);
|
|
379
397
|
const extra_state = segment.extra_state_fml
|
|
@@ -381,8 +399,8 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
381
399
|
: {};
|
|
382
400
|
if (segment.state === "local") {
|
|
383
401
|
const state1 = { ...extra_state };
|
|
384
|
-
const qs = stateToQueryString(state1, true);
|
|
385
|
-
segment.contents = div({
|
|
402
|
+
const qs = (0, plugin_helper_1.stateToQueryString)(state1, true);
|
|
403
|
+
segment.contents = (0, tags_1.div)({
|
|
386
404
|
class: "d-inline",
|
|
387
405
|
"data-sc-embed-viewname": view.name,
|
|
388
406
|
"data-sc-local-state": `/view/${view.name}${qs}`,
|
|
@@ -395,8 +413,8 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
395
413
|
}
|
|
396
414
|
else {
|
|
397
415
|
const state1 = { ...state, ...extra_state };
|
|
398
|
-
const qs = stateToQueryString(state1, true);
|
|
399
|
-
segment.contents = div({
|
|
416
|
+
const qs = (0, plugin_helper_1.stateToQueryString)(state1, true);
|
|
417
|
+
segment.contents = (0, tags_1.div)({
|
|
400
418
|
class: "d-inline",
|
|
401
419
|
"data-sc-embed-viewname": view.name,
|
|
402
420
|
"data-sc-view-source": `/view/${view.name}${qs}`,
|
|
@@ -407,7 +425,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
407
425
|
: await renderServerSide(view.name, state1));
|
|
408
426
|
}
|
|
409
427
|
}, state);
|
|
410
|
-
await
|
|
428
|
+
await page_1.default.renderEachEmbeddedPageInLayout(layout, state, extra);
|
|
411
429
|
translateLayout(layout, extra.req.getLocale());
|
|
412
430
|
const blockDispatch = {
|
|
413
431
|
field(segment) {
|
|
@@ -460,7 +478,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
460
478
|
(b.label?.toLowerCase?.() || b.label)
|
|
461
479
|
? 1
|
|
462
480
|
: -1);
|
|
463
|
-
const options = dvs.map(({ label, value, jsvalue }, ix) => option({
|
|
481
|
+
const options = dvs.map(({ label, value, jsvalue }, ix) => (0, tags_1.option)({
|
|
464
482
|
value,
|
|
465
483
|
selected: `${state[field_name]}` === `${or_if_undef(jsvalue, value)}` ||
|
|
466
484
|
(!value && !state[field_name]) ||
|
|
@@ -472,7 +490,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
472
490
|
: label_formula
|
|
473
491
|
? eval_expression(label_formula, { [field_name]: value }, extra.req.user || { role_id: 100 }, "Dropdown label formula")
|
|
474
492
|
: label));
|
|
475
|
-
return (select({
|
|
493
|
+
return ((0, tags_1.select)({
|
|
476
494
|
name: `ddfilter${field_name}`,
|
|
477
495
|
class: "form-control form-select d-inline-maybe scfilter selectizable",
|
|
478
496
|
style: full_width ? undefined : "width: unset;",
|
|
@@ -480,7 +498,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
480
498
|
onchange: `this.value=='' ? unset_state_field('${encodeURIComponent(field_name)}', this): set_state_field('${encodeURIComponent(field_name)}', this.value, this)`,
|
|
481
499
|
}, options) +
|
|
482
500
|
(apply_select2
|
|
483
|
-
? script(domReady(`$('select[name=ddfilter${field_name}]').select2();`))
|
|
501
|
+
? (0, tags_1.script)((0, tags_1.domReady)(`$('select[name=ddfilter${field_name}]').select2();`))
|
|
484
502
|
: ""));
|
|
485
503
|
},
|
|
486
504
|
action(segment) {
|
|
@@ -493,18 +511,18 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
493
511
|
: "";
|
|
494
512
|
if (action_name === "Clear") {
|
|
495
513
|
if (action_style === "btn-link")
|
|
496
|
-
return a({
|
|
514
|
+
return (0, tags_1.a)({
|
|
497
515
|
onclick: `${confirmStr}clear_state('${configuration?.omit_fields || ""}', this)`,
|
|
498
516
|
href: "javascript:void(0)",
|
|
499
517
|
}, action_icon
|
|
500
|
-
? i({ class: action_icon }) + (label ? " " : "")
|
|
518
|
+
? (0, tags_1.i)({ class: action_icon }) + (label ? " " : "")
|
|
501
519
|
: false, label);
|
|
502
520
|
else
|
|
503
|
-
return button({
|
|
521
|
+
return (0, tags_1.button)({
|
|
504
522
|
onClick: `${confirmStr}clear_state('${configuration?.omit_fields || ""}', this)`,
|
|
505
523
|
class: `btn ${action_style || "btn-primary"} ${action_size || ""}`,
|
|
506
524
|
}, action_icon
|
|
507
|
-
? i({ class: action_icon }) + (label ? " " : "")
|
|
525
|
+
? (0, tags_1.i)({ class: action_icon }) + (label ? " " : "")
|
|
508
526
|
: false, label);
|
|
509
527
|
}
|
|
510
528
|
else {
|
|
@@ -514,13 +532,13 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
514
532
|
javascript: `${confirmStr}view_post('${viewname}', 'run_action', {rndid:'${segment.rndid}'}, ` +
|
|
515
533
|
`null, ${withState});`,
|
|
516
534
|
};
|
|
517
|
-
return action_link(url, extra.req, segment);
|
|
535
|
+
return (0, viewable_fields_1.action_link)(url, extra.req, segment);
|
|
518
536
|
}
|
|
519
537
|
},
|
|
520
538
|
toggle_filter({ field_name, value, preset_value, label, size, style }) {
|
|
521
539
|
const field = fields.find((f) => f.name === field_name);
|
|
522
540
|
const isBool = field && field.type.name === "Bool";
|
|
523
|
-
const use_value = preset_value && field
|
|
541
|
+
const use_value = preset_value && field?.presets
|
|
524
542
|
? field.presets[preset_value]({
|
|
525
543
|
user: extra.req.user,
|
|
526
544
|
req: extra.req,
|
|
@@ -534,7 +552,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
534
552
|
"?": state[field_name] === null,
|
|
535
553
|
}[use_value]
|
|
536
554
|
: eq_string(state[field_name], use_value);
|
|
537
|
-
return button({
|
|
555
|
+
return (0, tags_1.button)({
|
|
538
556
|
class: [
|
|
539
557
|
"btn",
|
|
540
558
|
active
|
|
@@ -548,7 +566,7 @@ const run = async (table_id, viewname, { columns, layout }, state, extra, { dist
|
|
|
548
566
|
}, label || value || preset_value);
|
|
549
567
|
},
|
|
550
568
|
};
|
|
551
|
-
return div({ class: "form-namespace" }, renderLayout({
|
|
569
|
+
return (0, tags_1.div)({ class: "form-namespace" }, renderLayout({
|
|
552
570
|
blockDispatch,
|
|
553
571
|
layout,
|
|
554
572
|
role,
|
|
@@ -569,16 +587,16 @@ const or_if_undef = (x, y) => (typeof x === "undefined" ? y : x);
|
|
|
569
587
|
*/
|
|
570
588
|
const eq_string = (x, y) => `${x}` === `${y}`;
|
|
571
589
|
const run_action = async (table_id, viewname, config, body, { req, res }, { actionQuery }) => {
|
|
572
|
-
const table =
|
|
590
|
+
const table = table_1.default.findOne(table_id);
|
|
573
591
|
if (!table)
|
|
574
592
|
throw new InvalidConfiguration(`View '${viewname}:run_action' incorrectly configured: ` +
|
|
575
593
|
`Unable to find table with id '${table_id}'`);
|
|
576
594
|
const state = req?.query
|
|
577
|
-
? readState(removeEmptyStrings(req.query), table.getFields(), req)
|
|
595
|
+
? (0, plugin_helper_1.readState)(removeEmptyStrings(req.query), table.getFields(), req)
|
|
578
596
|
: {};
|
|
579
597
|
const result = await actionQuery(state, body?.rndid);
|
|
580
598
|
if (result.json.error) {
|
|
581
|
-
|
|
599
|
+
crash_1.default.create({ message: result.json.error, stack: "" }, req);
|
|
582
600
|
}
|
|
583
601
|
return result;
|
|
584
602
|
};
|
|
@@ -604,41 +622,41 @@ const combineResults = (results) => {
|
|
|
604
622
|
if (typeof result[memberName] === "undefined")
|
|
605
623
|
result.json[memberName] = newElement;
|
|
606
624
|
};
|
|
607
|
-
for (const
|
|
608
|
-
if (!
|
|
625
|
+
for (const r of results) {
|
|
626
|
+
if (!r)
|
|
609
627
|
continue;
|
|
610
|
-
if (
|
|
611
|
-
initOnce(
|
|
612
|
-
if (
|
|
613
|
-
initOnce(
|
|
614
|
-
if (
|
|
615
|
-
initOnce(
|
|
616
|
-
if (
|
|
628
|
+
if (r.reload_page)
|
|
629
|
+
initOnce(r.reload_page, "reload_page");
|
|
630
|
+
if (r.goto)
|
|
631
|
+
initOnce(r.goto, "goto");
|
|
632
|
+
if (r.popup)
|
|
633
|
+
initOnce(r.popup, "popup");
|
|
634
|
+
if (r.notify) {
|
|
617
635
|
if (numMsgs < messageLimit) {
|
|
618
|
-
initOrPush(
|
|
636
|
+
initOrPush(r.notify, "notify");
|
|
619
637
|
++numMsgs;
|
|
620
638
|
}
|
|
621
639
|
else
|
|
622
640
|
++suppressedMsgs;
|
|
623
641
|
}
|
|
624
|
-
if (
|
|
642
|
+
if (r.error) {
|
|
625
643
|
if (numMsgs < messageLimit) {
|
|
626
|
-
initOrPush(
|
|
644
|
+
initOrPush(r.error, "error");
|
|
627
645
|
++numMsgs;
|
|
628
646
|
}
|
|
629
647
|
else
|
|
630
648
|
++suppressedErrors;
|
|
631
649
|
}
|
|
632
|
-
if (
|
|
650
|
+
if (r.download) {
|
|
633
651
|
if (numDownloads < downloadLimit) {
|
|
634
|
-
initOrPush(
|
|
652
|
+
initOrPush(r.download, "download");
|
|
635
653
|
++numDownloads;
|
|
636
654
|
}
|
|
637
655
|
else
|
|
638
656
|
suppressedDownloads++;
|
|
639
657
|
}
|
|
640
|
-
if (
|
|
641
|
-
initOrPush(
|
|
658
|
+
if (r.eval_js)
|
|
659
|
+
initOrPush(r.eval_js, "eval_js");
|
|
642
660
|
}
|
|
643
661
|
let suppressedMsg = "";
|
|
644
662
|
if (suppressedMsgs > 0)
|
|
@@ -669,24 +687,25 @@ module.exports = {
|
|
|
669
687
|
routes: { run_action },
|
|
670
688
|
queries: ({ table_id, viewname, configuration: { columns }, req, res, exttable_name, }) => ({
|
|
671
689
|
async optionsQuery(reftable_name, type, attributes, whereWithExisting, user) {
|
|
672
|
-
return await
|
|
690
|
+
return await field_1.default.select_options_query(reftable_name, type === "File" ? attributes.select_file_where : whereWithExisting, attributes, undefined, user);
|
|
673
691
|
},
|
|
674
692
|
async actionQuery(state, rndid) {
|
|
675
693
|
const col = columns.find((c) => c.type === "Action" && c.rndid === rndid && rndid);
|
|
676
|
-
const table =
|
|
694
|
+
const table = table_1.default.findOne(table_id);
|
|
677
695
|
try {
|
|
678
696
|
return await db.withTransaction(async () => {
|
|
679
697
|
if (col.action_row_variable === "each_matching_row") {
|
|
680
698
|
const fields = table.getFields();
|
|
681
|
-
const { joinFields, aggregations } = picked_fields_to_query(columns, fields, undefined, req, table);
|
|
682
|
-
const where = stateFieldsToWhere({
|
|
699
|
+
const { joinFields, aggregations } = (0, plugin_helper_1.picked_fields_to_query)(columns, fields, undefined, req, table);
|
|
700
|
+
const where = (0, plugin_helper_1.stateFieldsToWhere)({
|
|
683
701
|
fields,
|
|
684
702
|
state,
|
|
685
703
|
table,
|
|
686
704
|
prefix: "a.",
|
|
687
705
|
});
|
|
688
|
-
const q = stateFieldsToQuery({
|
|
706
|
+
const q = (0, plugin_helper_1.stateFieldsToQuery)({
|
|
689
707
|
state,
|
|
708
|
+
fields,
|
|
690
709
|
prefix: "a.",
|
|
691
710
|
noSortAndPaging: true,
|
|
692
711
|
});
|
|
@@ -702,7 +721,7 @@ module.exports = {
|
|
|
702
721
|
});
|
|
703
722
|
const referrer = req?.get?.("Referrer");
|
|
704
723
|
return combineResults(await asyncMap(rows, async (row) => {
|
|
705
|
-
return await run_action_column({
|
|
724
|
+
return await (0, plugin_helper_1.run_action_column)({
|
|
706
725
|
col,
|
|
707
726
|
req,
|
|
708
727
|
table,
|
|
@@ -714,7 +733,7 @@ module.exports = {
|
|
|
714
733
|
}
|
|
715
734
|
else {
|
|
716
735
|
const row = col.action_row_variable === "state" ? { ...state } : null;
|
|
717
|
-
const result = await run_action_column({
|
|
736
|
+
const result = await (0, plugin_helper_1.run_action_column)({
|
|
718
737
|
col,
|
|
719
738
|
req,
|
|
720
739
|
table,
|
|
@@ -732,7 +751,7 @@ module.exports = {
|
|
|
732
751
|
}
|
|
733
752
|
},
|
|
734
753
|
async distinctValuesQuery(state) {
|
|
735
|
-
const table =
|
|
754
|
+
const table = table_1.default.findOne(table_id || exttable_name);
|
|
736
755
|
const fields = table.getFields();
|
|
737
756
|
let distinct_values = {};
|
|
738
757
|
const role = req.user ? req.user.role_id : 100;
|
|
@@ -764,7 +783,7 @@ module.exports = {
|
|
|
764
783
|
else if (col.field_name.includes("->")) {
|
|
765
784
|
const [jFieldNm, krest] = col.field_name.split(".");
|
|
766
785
|
const [jtNm, lblField] = krest.split("->");
|
|
767
|
-
const jtable =
|
|
786
|
+
const jtable = table_1.default.findOne({ name: jtNm });
|
|
768
787
|
if (!jtable)
|
|
769
788
|
throw new InvalidConfiguration(`View ${viewname} incorrectly configured: cannot find join table ${jtNm}`);
|
|
770
789
|
const jfields = await jtable.getFields();
|
|
@@ -776,7 +795,7 @@ module.exports = {
|
|
|
776
795
|
const kpath = col.field_name.split(".");
|
|
777
796
|
if (kpath.length === 3) {
|
|
778
797
|
const [jtNm, jFieldNm, lblField] = kpath;
|
|
779
|
-
const jtable =
|
|
798
|
+
const jtable = table_1.default.findOne({ name: jtNm });
|
|
780
799
|
if (!jtable)
|
|
781
800
|
throw new InvalidConfiguration(`View ${viewname} incorrectly configured: cannot find join table ${jtNm}`);
|
|
782
801
|
const jfields = jtable.fields;
|