@saltcorn/data 1.6.0-alpha.7 → 1.6.0-alpha.8
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 -1656
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +122 -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 +15 -14
- package/dist/base-plugin/fileviews.d.ts.map +1 -1
- package/dist/base-plugin/fileviews.js +22 -18
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +3369 -1293
- 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 +292 -349
- 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 +86 -82
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +40 -115
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +143 -162
- 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 -133
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +72 -182
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +2 -2
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +2 -1
- 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 +1 -0
- package/dist/db/connect.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 +5 -2
- package/dist/db/state.js.map +1 -1
- package/dist/model-helper.d.ts +4 -16
- package/dist/model-helper.d.ts.map +1 -1
- package/dist/model-helper.js +3 -3
- 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 +5 -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 +1 -1
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js.map +1 -1
- package/dist/models/form.js +1 -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/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/plugin.d.ts +3 -2
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +7 -0
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +6 -1
- package/dist/models/table.js.map +1 -1
- package/dist/plugin-testing.d.ts +3 -63
- package/dist/plugin-testing.d.ts.map +1 -1
- package/dist/plugin-testing.js +34 -15
- package/dist/plugin-testing.js.map +1 -1
- package/dist/standard-menu.d.ts.map +1 -1
- package/dist/standard-menu.js +15 -0
- package/dist/standard-menu.js.map +1 -1
- package/dist/tests/actions.test.d.ts +2 -0
- package/dist/tests/actions.test.d.ts.map +1 -0
- package/dist/tests/actions.test.js +936 -0
- package/dist/tests/actions.test.js.map +1 -0
- package/dist/tests/auth.test.d.ts +2 -0
- package/dist/tests/auth.test.d.ts.map +1 -0
- package/dist/tests/auth.test.js +824 -0
- package/dist/tests/auth.test.js.map +1 -0
- package/dist/tests/auxtest.test.d.ts +2 -0
- package/dist/tests/auxtest.test.d.ts.map +1 -0
- package/dist/tests/auxtest.test.js +562 -0
- package/dist/tests/auxtest.test.js.map +1 -0
- package/dist/tests/base.test.d.ts +2 -0
- package/dist/tests/base.test.d.ts.map +1 -0
- package/dist/tests/base.test.js +30 -0
- package/dist/tests/base.test.js.map +1 -0
- package/dist/tests/calc.test.d.ts +2 -0
- package/dist/tests/calc.test.d.ts.map +1 -0
- package/dist/tests/calc.test.js +1081 -0
- package/dist/tests/calc.test.js.map +1 -0
- package/dist/tests/composite_pk.test.d.ts +2 -0
- package/dist/tests/composite_pk.test.d.ts.map +1 -0
- package/dist/tests/composite_pk.test.js +98 -0
- package/dist/tests/composite_pk.test.js.map +1 -0
- package/dist/tests/config.test.d.ts +2 -0
- package/dist/tests/config.test.d.ts.map +1 -0
- package/dist/tests/config.test.js +86 -0
- package/dist/tests/config.test.js.map +1 -0
- package/dist/tests/db.test.d.ts +2 -0
- package/dist/tests/db.test.d.ts.map +1 -0
- package/dist/tests/db.test.js +178 -0
- package/dist/tests/db.test.js.map +1 -0
- package/dist/tests/discover.test.d.ts +2 -0
- package/dist/tests/discover.test.d.ts.map +1 -0
- package/dist/tests/discover.test.js +245 -0
- package/dist/tests/discover.test.js.map +1 -0
- package/dist/tests/edit.test.d.ts +2 -0
- package/dist/tests/edit.test.d.ts.map +1 -0
- package/dist/tests/edit.test.js +1161 -0
- package/dist/tests/edit.test.js.map +1 -0
- package/dist/tests/email.test.d.ts +2 -0
- package/dist/tests/email.test.d.ts.map +1 -0
- package/dist/tests/email.test.js +255 -0
- package/dist/tests/email.test.js.map +1 -0
- package/dist/tests/exact_views.test.d.ts +2 -0
- package/dist/tests/exact_views.test.d.ts.map +1 -0
- package/dist/tests/exact_views.test.js +1363 -0
- package/dist/tests/exact_views.test.js.map +1 -0
- package/dist/tests/field.test.d.ts +2 -0
- package/dist/tests/field.test.d.ts.map +1 -0
- package/dist/tests/field.test.js +588 -0
- package/dist/tests/field.test.js.map +1 -0
- package/dist/tests/fieldviews.test.d.ts +2 -0
- package/dist/tests/fieldviews.test.d.ts.map +1 -0
- package/dist/tests/fieldviews.test.js +74 -0
- package/dist/tests/fieldviews.test.js.map +1 -0
- package/dist/tests/file.test.d.ts +2 -0
- package/dist/tests/file.test.d.ts.map +1 -0
- package/dist/tests/file.test.js +148 -0
- package/dist/tests/file.test.js.map +1 -0
- package/dist/tests/filter.test.d.ts +2 -0
- package/dist/tests/filter.test.d.ts.map +1 -0
- package/dist/tests/filter.test.js +496 -0
- package/dist/tests/filter.test.js.map +1 -0
- package/dist/tests/form.test.d.ts +2 -0
- package/dist/tests/form.test.d.ts.map +1 -0
- package/dist/tests/form.test.js +264 -0
- package/dist/tests/form.test.js.map +1 -0
- package/dist/tests/list.test.d.ts +2 -0
- package/dist/tests/list.test.d.ts.map +1 -0
- package/dist/tests/list.test.js +1037 -0
- package/dist/tests/list.test.js.map +1 -0
- package/dist/tests/models.test.d.ts +2 -0
- package/dist/tests/models.test.d.ts.map +1 -0
- package/dist/tests/models.test.js +417 -0
- package/dist/tests/models.test.js.map +1 -0
- package/dist/tests/page.test.d.ts +2 -0
- package/dist/tests/page.test.d.ts.map +1 -0
- package/dist/tests/page.test.js +26 -0
- package/dist/tests/page.test.js.map +1 -0
- package/dist/tests/page_group.test.d.ts +2 -0
- package/dist/tests/page_group.test.d.ts.map +1 -0
- package/dist/tests/page_group.test.js +51 -0
- package/dist/tests/page_group.test.js.map +1 -0
- package/dist/tests/plugin.test.d.ts +2 -0
- package/dist/tests/plugin.test.d.ts.map +1 -0
- package/dist/tests/plugin.test.js +60 -0
- package/dist/tests/plugin.test.js.map +1 -0
- package/dist/tests/show.test.d.ts +2 -0
- package/dist/tests/show.test.d.ts.map +1 -0
- package/dist/tests/show.test.js +561 -0
- package/dist/tests/show.test.js.map +1 -0
- package/dist/tests/state.test.d.ts +2 -0
- package/dist/tests/state.test.d.ts.map +1 -0
- package/dist/tests/state.test.js +82 -0
- package/dist/tests/state.test.js.map +1 -0
- package/dist/tests/table.test.d.ts +2 -0
- package/dist/tests/table.test.d.ts.map +1 -0
- package/dist/tests/table.test.js +2717 -0
- package/dist/tests/table.test.js.map +1 -0
- package/dist/tests/table_history.test.d.ts +2 -0
- package/dist/tests/table_history.test.d.ts.map +1 -0
- package/dist/tests/table_history.test.js +413 -0
- package/dist/tests/table_history.test.js.map +1 -0
- package/dist/tests/tag.test.d.ts +2 -0
- package/dist/tests/tag.test.d.ts.map +1 -0
- package/dist/tests/tag.test.js +97 -0
- package/dist/tests/tag.test.js.map +1 -0
- package/dist/tests/user.test.d.ts +2 -0
- package/dist/tests/user.test.d.ts.map +1 -0
- package/dist/tests/user.test.js +441 -0
- package/dist/tests/user.test.js.map +1 -0
- package/dist/tests/view.test.d.ts +2 -0
- package/dist/tests/view.test.d.ts.map +1 -0
- package/dist/tests/view.test.js +699 -0
- package/dist/tests/view.test.js.map +1 -0
- package/dist/tests/workflow.test.d.ts +2 -0
- package/dist/tests/workflow.test.d.ts.map +1 -0
- package/dist/tests/workflow.test.js +303 -0
- package/dist/tests/workflow.test.js.map +1 -0
- package/dist/tests/workflow_run.test.d.ts +2 -0
- package/dist/tests/workflow_run.test.d.ts.map +1 -0
- package/dist/tests/workflow_run.test.js +922 -0
- package/dist/tests/workflow_run.test.js.map +1 -0
- package/dist/viewable_fields.d.ts +5 -4
- package/dist/viewable_fields.d.ts.map +1 -1
- package/dist/viewable_fields.js +12 -6
- package/dist/viewable_fields.js.map +1 -1
- package/dist/web-mobile-commons.d.ts.map +1 -1
- package/dist/web-mobile-commons.js +1 -0
- package/dist/web-mobile-commons.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const user_1 = __importDefault(require("../../models/user"));
|
|
6
|
+
const field_1 = __importDefault(require("../../models/field"));
|
|
7
|
+
const view_1 = __importDefault(require("../../models/view"));
|
|
8
|
+
const table_1 = __importDefault(require("../../models/table"));
|
|
9
|
+
const page_1 = __importDefault(require("../../models/page"));
|
|
10
|
+
const crash_1 = __importDefault(require("../../models/crash"));
|
|
11
|
+
const workflow_1 = __importDefault(require("../../models/workflow"));
|
|
12
|
+
const trigger_1 = __importDefault(require("../../models/trigger"));
|
|
13
|
+
const file_1 = __importDefault(require("../../models/file"));
|
|
14
14
|
const PageGroup = require("../../models/page_group");
|
|
15
|
-
const Crash = require("../../models/crash");
|
|
16
|
-
const Workflow = require("../../models/workflow");
|
|
17
|
-
const Trigger = require("../../models/trigger");
|
|
18
15
|
const { Relation } = require("@saltcorn/common-code");
|
|
19
16
|
const { getState } = require("../../db/state");
|
|
20
17
|
const { eachView, traverse, getStringsForI18n, translateLayout, splitLayoutContainerFields, findLayoutBranchWith, } = require("../../models/layout");
|
|
21
18
|
const { check_view_columns } = require("../../plugin-testing");
|
|
22
19
|
const { div, text, span, a, text_attr, i, button, script, domReady, } = require("@saltcorn/markup/tags");
|
|
23
20
|
const renderLayout = require("@saltcorn/markup/layout");
|
|
24
|
-
const
|
|
25
|
-
const
|
|
21
|
+
const plugin_helper_1 = require("../../plugin-helper");
|
|
22
|
+
const viewable_fields_1 = require("../../viewable_fields");
|
|
26
23
|
const db = require("../../db");
|
|
27
24
|
const { asyncMap, structuredClone, InvalidConfiguration, mergeIntoWhere, isWeb, hashState, getSafeBaseUrl, dollarizeObject, getSessionId, interpolate, validSqlId, renderServerSide, } = require("../../utils");
|
|
28
25
|
const { traverseSync } = require("../../models/layout");
|
|
@@ -31,16 +28,12 @@ const { get_base_url } = require("../../models/config");
|
|
|
31
28
|
const Library = require("../../models/library");
|
|
32
29
|
const { extractFromLayout } = require("../../diagram/node_extract_utils");
|
|
33
30
|
const _ = require("underscore");
|
|
34
|
-
|
|
35
|
-
* @param {object} req
|
|
36
|
-
* @returns {Workflow}
|
|
37
|
-
*/
|
|
38
|
-
const configuration_workflow = (req) => new Workflow({
|
|
31
|
+
const configuration_workflow = (req) => new workflow_1.default({
|
|
39
32
|
steps: [
|
|
40
33
|
{
|
|
41
34
|
name: req.__("Layout"),
|
|
42
35
|
builder: async (context) => {
|
|
43
|
-
const table =
|
|
36
|
+
const table = table_1.default.findOne(context.table_id || context.exttable_name);
|
|
44
37
|
const fields = table.getFields();
|
|
45
38
|
const boolfields = fields.filter((f) => f.type && f.type.name === "Bool");
|
|
46
39
|
const stateActions = Object.entries(getState().actions).filter(([k, v]) => !v.disableInBuilder && !v.disableIf?.());
|
|
@@ -49,11 +42,11 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
49
42
|
"GoBack",
|
|
50
43
|
...boolfields.map((f) => `Toggle ${f.name}`),
|
|
51
44
|
];
|
|
52
|
-
const triggerActions =
|
|
45
|
+
const triggerActions = trigger_1.default.trigger_actions({
|
|
53
46
|
tableTriggers: table.id,
|
|
54
47
|
apiNeverTriggers: true,
|
|
55
48
|
});
|
|
56
|
-
const actions =
|
|
49
|
+
const actions = trigger_1.default.action_options({
|
|
57
50
|
tableTriggers: table.id,
|
|
58
51
|
apiNeverTriggers: true,
|
|
59
52
|
forBuilder: true,
|
|
@@ -62,7 +55,7 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
62
55
|
});
|
|
63
56
|
for (const field of fields) {
|
|
64
57
|
if (field.type === "Key") {
|
|
65
|
-
field.reftable =
|
|
58
|
+
field.reftable = table_1.default.findOne({
|
|
66
59
|
name: field.reftable_name,
|
|
67
60
|
});
|
|
68
61
|
if (field.reftable)
|
|
@@ -90,10 +83,10 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
90
83
|
};
|
|
91
84
|
for (const [name, action] of stateActions) {
|
|
92
85
|
if (action.configFields) {
|
|
93
|
-
actionConfigForms[name] = await getActionConfigFields(action, table, { mode: "show", req });
|
|
86
|
+
actionConfigForms[name] = await (0, plugin_helper_1.getActionConfigFields)(action, table, { mode: "show", req });
|
|
94
87
|
}
|
|
95
88
|
}
|
|
96
|
-
const workflowActions =
|
|
89
|
+
const workflowActions = trigger_1.default.trigger_actions({
|
|
97
90
|
tableTriggers: table.id,
|
|
98
91
|
apiNeverTriggers: true,
|
|
99
92
|
onlyWorkflows: true,
|
|
@@ -109,13 +102,13 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
109
102
|
];
|
|
110
103
|
}
|
|
111
104
|
//const fieldViewConfigForms = await calcfldViewConfig(fields, false);
|
|
112
|
-
const { field_view_options, handlesTextStyle } = calcfldViewOptions(fields, "show");
|
|
105
|
+
const { field_view_options, handlesTextStyle } = (0, plugin_helper_1.calcfldViewOptions)(fields, "show");
|
|
113
106
|
if (table.name === "users") {
|
|
114
|
-
fields.push(new
|
|
107
|
+
fields.push(new field_1.default({
|
|
115
108
|
name: "verification_url",
|
|
116
109
|
label: "Verification URL",
|
|
117
110
|
type: "String",
|
|
118
|
-
}), new
|
|
111
|
+
}), new field_1.default({
|
|
119
112
|
name: "reset_password_url",
|
|
120
113
|
label: "Reset Password URL",
|
|
121
114
|
type: "String",
|
|
@@ -123,8 +116,8 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
123
116
|
field_view_options.verification_url = ["as_text", "as_link"];
|
|
124
117
|
field_view_options.reset_password_url = ["as_text", "as_link"];
|
|
125
118
|
}
|
|
126
|
-
const rel_field_view_options = await calcrelViewOptions(table, "show");
|
|
127
|
-
const roles = await
|
|
119
|
+
const rel_field_view_options = await (0, plugin_helper_1.calcrelViewOptions)(table, "show");
|
|
120
|
+
const roles = await user_1.default.get_roles();
|
|
128
121
|
const { parent_field_list } = await table.get_parent_relations(true, true);
|
|
129
122
|
const { child_field_list, child_relations } = await table.get_child_relations(true);
|
|
130
123
|
var agg_field_opts = {};
|
|
@@ -147,13 +140,13 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
147
140
|
.filter(([k, v]) => !v.isEdit && !v.isFilter)
|
|
148
141
|
.map(([k, v]) => k);
|
|
149
142
|
});
|
|
150
|
-
const pages = await
|
|
143
|
+
const pages = await page_1.default.find();
|
|
151
144
|
const groups = (await PageGroup.find()).map((g) => ({
|
|
152
145
|
name: g.name,
|
|
153
146
|
}));
|
|
154
|
-
const images = await
|
|
147
|
+
const images = await file_1.default.find({ mime_super: "image" });
|
|
155
148
|
const library = (await Library.find({})).filter((l) => l.suitableFor("show"));
|
|
156
|
-
const myviewrow =
|
|
149
|
+
const myviewrow = view_1.default.findOne({ name: context.viewname });
|
|
157
150
|
return {
|
|
158
151
|
tableName: table.name,
|
|
159
152
|
fields: fields.map((f) => f.toBuilder),
|
|
@@ -187,9 +180,6 @@ const configuration_workflow = (req) => new Workflow({
|
|
|
187
180
|
},
|
|
188
181
|
],
|
|
189
182
|
});
|
|
190
|
-
/**
|
|
191
|
-
* @returns {object[]}
|
|
192
|
-
*/
|
|
193
183
|
const get_state_fields = () => [
|
|
194
184
|
{
|
|
195
185
|
name: "id",
|
|
@@ -198,33 +188,18 @@ const get_state_fields = () => [
|
|
|
198
188
|
primary_key: true,
|
|
199
189
|
},
|
|
200
190
|
];
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
/**
|
|
204
|
-
* @param {string} table_id
|
|
205
|
-
* @param {string} viewname
|
|
206
|
-
* @param {object} opts
|
|
207
|
-
* @param {object[]} opts.columns
|
|
208
|
-
* @param {object} opts.layout
|
|
209
|
-
* @param {string} [opts.page_title]
|
|
210
|
-
* @param {boolean} opts.page_title_formula
|
|
211
|
-
* @param {object} state
|
|
212
|
-
* @param {object} extra
|
|
213
|
-
* @returns {Promise<string>}
|
|
214
|
-
*/
|
|
215
|
-
const run = async (table_id, viewname, { columns, layout, page_title, page_title_formula }, state, extra, { showQuery }) => {
|
|
216
|
-
//console.log(columns);
|
|
217
|
-
//console.log(layout);
|
|
191
|
+
const initial_config = (0, plugin_helper_1.initial_config_all_fields)(false);
|
|
192
|
+
const run = async (table_id, viewname, { columns, layout, page_title, page_title_formula, }, state, extra, { showQuery }) => {
|
|
218
193
|
if (!columns || !layout)
|
|
219
194
|
return "View not yet built";
|
|
220
|
-
const tbl =
|
|
195
|
+
const tbl = table_1.default.findOne(table_id);
|
|
221
196
|
const fields = await tbl.getFields();
|
|
222
197
|
if (tbl.name === "users") {
|
|
223
|
-
fields.push(new
|
|
198
|
+
fields.push(new field_1.default({
|
|
224
199
|
name: "verification_token",
|
|
225
200
|
label: "Verification Token",
|
|
226
201
|
type: "String",
|
|
227
|
-
}), new
|
|
202
|
+
}), new field_1.default({
|
|
228
203
|
name: "reset_password_token",
|
|
229
204
|
label: "Reset Password Token",
|
|
230
205
|
type: "String",
|
|
@@ -249,11 +224,11 @@ const run = async (table_id, viewname, { columns, layout, page_title, page_title
|
|
|
249
224
|
return extra.req.__("No row selected");
|
|
250
225
|
if (tbl.name === "users") {
|
|
251
226
|
const base = get_base_url(extra.req);
|
|
252
|
-
fields.push(new
|
|
227
|
+
fields.push(new field_1.default({
|
|
253
228
|
name: "verification_url",
|
|
254
229
|
label: "Verification URL",
|
|
255
230
|
type: "String",
|
|
256
|
-
}), new
|
|
231
|
+
}), new field_1.default({
|
|
257
232
|
name: "reset_password_url",
|
|
258
233
|
label: "Reset Password URL",
|
|
259
234
|
type: "String",
|
|
@@ -289,12 +264,6 @@ const run = async (table_id, viewname, { columns, layout, page_title, page_title
|
|
|
289
264
|
return rendered;
|
|
290
265
|
}
|
|
291
266
|
};
|
|
292
|
-
/**
|
|
293
|
-
* @param {object} opts
|
|
294
|
-
* @param {object} opts.layout
|
|
295
|
-
* @param {object[]} opts.fields
|
|
296
|
-
* @returns {Promise<void>}
|
|
297
|
-
*/
|
|
298
267
|
const set_load_actions_join_fieldviews = async ({ table, layout, fields, req, res, row, isPreview, }) => {
|
|
299
268
|
await traverse(layout, {
|
|
300
269
|
join_field: async (segment) => {
|
|
@@ -322,7 +291,7 @@ const set_load_actions_join_fieldviews = async ({ table, layout, fields, req, re
|
|
|
322
291
|
//run action
|
|
323
292
|
if (isPreview)
|
|
324
293
|
return;
|
|
325
|
-
const actionResult = await run_action_column({
|
|
294
|
+
const actionResult = await (0, plugin_helper_1.run_action_column)({
|
|
326
295
|
col: { ...segment },
|
|
327
296
|
referrer: req?.get?.("Referrer"),
|
|
328
297
|
req,
|
|
@@ -340,19 +309,7 @@ const set_load_actions_join_fieldviews = async ({ table, layout, fields, req, re
|
|
|
340
309
|
},
|
|
341
310
|
});
|
|
342
311
|
};
|
|
343
|
-
/**
|
|
344
|
-
* @param {object} table
|
|
345
|
-
* @param {string} viewname
|
|
346
|
-
* @param {object} opts
|
|
347
|
-
* @param {object[]} opts.columns
|
|
348
|
-
* @param {object} opts.layout
|
|
349
|
-
* @param {object} extra
|
|
350
|
-
* @param {object[]} rows
|
|
351
|
-
* @returns {Promise<string>}
|
|
352
|
-
*/
|
|
353
312
|
const renderRows = async (table, viewname, { columns, layout }, extra, rows, state) => {
|
|
354
|
-
//console.log(columns);
|
|
355
|
-
//console.log(layout);
|
|
356
313
|
if (!columns || !layout)
|
|
357
314
|
return "View not yet built";
|
|
358
315
|
const fields = table.getFields();
|
|
@@ -361,14 +318,14 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
361
318
|
const getView = async (name, relation) => {
|
|
362
319
|
if (views[name])
|
|
363
320
|
return views[name];
|
|
364
|
-
const view_select = parse_view_select(name, relation);
|
|
365
|
-
const view =
|
|
321
|
+
const view_select = (0, viewable_fields_1.parse_view_select)(name, relation);
|
|
322
|
+
const view = view_1.default.findOne({ name: view_select.viewname });
|
|
366
323
|
if (!view)
|
|
367
324
|
return false;
|
|
368
325
|
if (view.table_id === table.id)
|
|
369
326
|
view.table = table;
|
|
370
327
|
else
|
|
371
|
-
view.table =
|
|
328
|
+
view.table = table_1.default.findOne({ id: view.table_id });
|
|
372
329
|
view.view_select = view_select;
|
|
373
330
|
views[name] = view;
|
|
374
331
|
return view;
|
|
@@ -409,9 +366,9 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
409
366
|
};
|
|
410
367
|
const get_user_id = () => (extra.req.user ? extra.req.user.id : 0);
|
|
411
368
|
if (view.view_select.type === "RelationPath" && view.table_id) {
|
|
412
|
-
const targetTbl =
|
|
413
|
-
const relation = new Relation(segment.relation, targetTbl.name, displayType(await view.get_state_fields()));
|
|
414
|
-
state1 = pathToState(relation, relation.isFixedRelation() ? get_user_id : get_row_val);
|
|
369
|
+
const targetTbl = table_1.default.findOne({ id: view.table_id });
|
|
370
|
+
const relation = new Relation(segment.relation, targetTbl.name, (0, plugin_helper_1.displayType)(await view.get_state_fields()));
|
|
371
|
+
state1 = (0, plugin_helper_1.pathToState)(relation, relation.isFixedRelation() ? get_user_id : get_row_val);
|
|
415
372
|
}
|
|
416
373
|
else {
|
|
417
374
|
switch (view.view_select.type) {
|
|
@@ -448,7 +405,7 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
448
405
|
//console.log(segment);
|
|
449
406
|
if (segment.state === "local") {
|
|
450
407
|
const state2 = { ...state1, ...extra_state };
|
|
451
|
-
const qs = stateToQueryString(state2, true);
|
|
408
|
+
const qs = (0, plugin_helper_1.stateToQueryString)(state2, true);
|
|
452
409
|
if (view.name === viewname &&
|
|
453
410
|
JSON.stringify(state) === JSON.stringify(state2))
|
|
454
411
|
throw new InvalidConfiguration(`View ${view.name} embeds itself with same state; inifinite loop detected`);
|
|
@@ -465,7 +422,7 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
465
422
|
}
|
|
466
423
|
else {
|
|
467
424
|
const state2 = { ...outerState, ...state1, ...extra_state };
|
|
468
|
-
const qs = stateToQueryString(state2, true);
|
|
425
|
+
const qs = (0, plugin_helper_1.stateToQueryString)(state2, true);
|
|
469
426
|
if (view.name === viewname &&
|
|
470
427
|
JSON.stringify(state) === JSON.stringify(state2))
|
|
471
428
|
throw new InvalidConfiguration(`View ${view.name} embeds itself with same state; inifinite loop detected`);
|
|
@@ -481,7 +438,7 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
481
438
|
}
|
|
482
439
|
}
|
|
483
440
|
}, state);
|
|
484
|
-
await
|
|
441
|
+
await page_1.default.renderEachEmbeddedPageInLayout(layout, state, extra);
|
|
485
442
|
const user_id = extra.req.user ? extra.req.user.id : null;
|
|
486
443
|
const is_owner = table.ownership_formula && user_id && role > table.min_role_read
|
|
487
444
|
? await table.is_owner(extra.req.user, row)
|
|
@@ -489,18 +446,8 @@ const renderRows = async (table, viewname, { columns, layout }, extra, rows, sta
|
|
|
489
446
|
return render(row, fields, layout, viewname, table, role, extra.req, is_owner, state, extra);
|
|
490
447
|
});
|
|
491
448
|
};
|
|
492
|
-
/**
|
|
493
|
-
* @param {number} table_id
|
|
494
|
-
* @param {string} viewname
|
|
495
|
-
* @param {object} opts
|
|
496
|
-
* @param {object[]} opts.columns
|
|
497
|
-
* @param {object} opts.layout
|
|
498
|
-
* @param {object} state
|
|
499
|
-
* @param {object} extra
|
|
500
|
-
* @returns {Promise<object[]>}
|
|
501
|
-
*/
|
|
502
449
|
const runMany = async (table_id, viewname, { columns, layout }, state, extra, { runManyQuery }) => {
|
|
503
|
-
const tbl =
|
|
450
|
+
const tbl = table_1.default.findOne({ id: table_id });
|
|
504
451
|
const rows = await runManyQuery(state, {
|
|
505
452
|
where: extra.where,
|
|
506
453
|
joinFieldsExtra: extra.joinFields,
|
|
@@ -512,25 +459,13 @@ const runMany = async (table_id, viewname, { columns, layout }, state, extra, {
|
|
|
512
459
|
const rendered = await renderRows(tbl, viewname, { columns, layout }, extra, rows, state);
|
|
513
460
|
return rendered.map((html, ix) => ({ html, row: rows[ix] }));
|
|
514
461
|
};
|
|
515
|
-
/**
|
|
516
|
-
* @param {object} row
|
|
517
|
-
* @param {Field[]} fields
|
|
518
|
-
* @param {Layout} layout0
|
|
519
|
-
* @param {string} viewname
|
|
520
|
-
* @param {Table} table
|
|
521
|
-
* @param {Role} role
|
|
522
|
-
* @param {object} req
|
|
523
|
-
* @param {object} is_owner
|
|
524
|
-
* @throws {Error}
|
|
525
|
-
* @returns {Layout}
|
|
526
|
-
*/
|
|
527
462
|
const render = (row, fields, layout0, viewname, table, role, req, is_owner, state, extra) => {
|
|
528
463
|
const locale = req.getLocale();
|
|
529
464
|
const layout = structuredClone(layout0);
|
|
530
465
|
translateLayout(layout, locale);
|
|
531
|
-
traverseSync(layout, standardLayoutRowVisitor(viewname, state, table, row, req));
|
|
466
|
+
traverseSync(layout, (0, viewable_fields_1.standardLayoutRowVisitor)(viewname, state, table, row, req));
|
|
532
467
|
return renderLayout({
|
|
533
|
-
blockDispatch: standardBlockDispatch(viewname, state, table, extra, row),
|
|
468
|
+
blockDispatch: (0, viewable_fields_1.standardBlockDispatch)(viewname, state, table, extra, row),
|
|
534
469
|
layout,
|
|
535
470
|
role,
|
|
536
471
|
is_owner,
|
|
@@ -538,28 +473,16 @@ const render = (row, fields, layout0, viewname, table, role, req, is_owner, stat
|
|
|
538
473
|
hints: getState().getLayout(req.user).hints || {},
|
|
539
474
|
});
|
|
540
475
|
};
|
|
541
|
-
/**
|
|
542
|
-
* @param {number} table_id
|
|
543
|
-
* @param {*} viewname
|
|
544
|
-
* @param {object} opts
|
|
545
|
-
* @param {object[]} opts.columns
|
|
546
|
-
* @param {*} opts.layout
|
|
547
|
-
* @param {*} body
|
|
548
|
-
* @param {object} optsTwo
|
|
549
|
-
* @param {object} optsTwo.req
|
|
550
|
-
* @param {*} optsTwo.res
|
|
551
|
-
* @returns {Promise<object>}
|
|
552
|
-
*/
|
|
553
476
|
const run_action = async (table_id, viewname, { columns, layout }, body, { req, res }, { actionQuery }) => {
|
|
554
477
|
const result = await actionQuery();
|
|
555
478
|
if (result.json.error) {
|
|
556
|
-
|
|
479
|
+
crash_1.default.create({ message: result.json.error, stack: "" }, req);
|
|
557
480
|
}
|
|
558
481
|
return result;
|
|
559
482
|
};
|
|
560
483
|
const createBasicView = async ({ table, viewname, template_view, template_table, all_views_created, }) => {
|
|
561
484
|
if (!template_view) {
|
|
562
|
-
const configuration = await initial_config_all_fields(false)({
|
|
485
|
+
const configuration = await (0, plugin_helper_1.initial_config_all_fields)(false)({
|
|
563
486
|
table_id: table.id,
|
|
564
487
|
});
|
|
565
488
|
return configuration;
|
|
@@ -610,13 +533,10 @@ const createBasicView = async ({ table, viewname, template_view, template_table,
|
|
|
610
533
|
layout: outer({ above: inners }),
|
|
611
534
|
columns,
|
|
612
535
|
};
|
|
613
|
-
//console.log("show cfg", cfg);
|
|
614
536
|
return cfg;
|
|
615
537
|
};
|
|
616
538
|
module.exports = {
|
|
617
|
-
/** @type {string} */
|
|
618
539
|
name: "Show",
|
|
619
|
-
/** @type {string} */
|
|
620
540
|
description: "Show a single row, with flexible layout",
|
|
621
541
|
get_state_fields,
|
|
622
542
|
configuration_workflow,
|
|
@@ -626,21 +546,16 @@ module.exports = {
|
|
|
626
546
|
initial_config,
|
|
627
547
|
createBasicView,
|
|
628
548
|
routes: { run_action },
|
|
629
|
-
/**
|
|
630
|
-
* @param {object} opts
|
|
631
|
-
* @param {object} opts.layout
|
|
632
|
-
* @returns {string[]}
|
|
633
|
-
*/
|
|
634
549
|
getStringsForI18n({ layout }) {
|
|
635
550
|
return getStringsForI18n(layout);
|
|
636
551
|
},
|
|
637
552
|
async interpolate_title_string(table_id, title, state) {
|
|
638
|
-
const tbl =
|
|
553
|
+
const tbl = table_1.default.findOne(table_id);
|
|
639
554
|
if (state?.[tbl.pk_name]) {
|
|
640
555
|
const freeVars = freeVariablesInInterpolation(title);
|
|
641
556
|
const joinFields = {};
|
|
642
557
|
const aggregations = {};
|
|
643
|
-
add_free_variables_to_joinfields(freeVars, joinFields, tbl.fields);
|
|
558
|
+
(0, plugin_helper_1.add_free_variables_to_joinfields)(freeVars, joinFields, tbl.fields);
|
|
644
559
|
add_free_variables_to_aggregations(freeVars, aggregations, tbl);
|
|
645
560
|
const row = await tbl.getJoinedRow({
|
|
646
561
|
where: { [tbl.pk_name]: state[tbl.pk_name] },
|
|
@@ -652,29 +567,26 @@ module.exports = {
|
|
|
652
567
|
else
|
|
653
568
|
return title;
|
|
654
569
|
},
|
|
655
|
-
/*authorise_get: async ({ query, table_id }, { authorizeGetQuery }) => {
|
|
656
|
-
return await authorizeGetQuery(query, table_id);
|
|
657
|
-
},*/
|
|
658
570
|
queries: ({ table_id, exttable_name, name, // viewname
|
|
659
571
|
configuration: { columns, layout }, req, res, }) => ({
|
|
660
572
|
async showQuery(state) {
|
|
661
|
-
const tbl =
|
|
573
|
+
const tbl = table_1.default.findOne(table_id || exttable_name);
|
|
662
574
|
const fields = tbl.getFields();
|
|
663
575
|
if (tbl.name === "users") {
|
|
664
|
-
fields.push(new
|
|
576
|
+
fields.push(new field_1.default({
|
|
665
577
|
name: "verification_token",
|
|
666
578
|
label: "Verification Token",
|
|
667
579
|
type: "String",
|
|
668
|
-
}), {
|
|
580
|
+
}), new field_1.default({
|
|
669
581
|
name: "reset_password_token",
|
|
670
582
|
label: "Reset Password Token",
|
|
671
583
|
type: "String",
|
|
672
|
-
});
|
|
584
|
+
}));
|
|
673
585
|
}
|
|
674
|
-
const { joinFields, aggregations } = picked_fields_to_query(columns, fields, layout, req, tbl);
|
|
586
|
+
const { joinFields, aggregations } = (0, plugin_helper_1.picked_fields_to_query)(columns, fields, layout, req, tbl);
|
|
675
587
|
const unhashed_reset_password_token = state._unhashed_reset_password_token;
|
|
676
|
-
readState(state, fields);
|
|
677
|
-
const qstate = stateFieldsToWhere({
|
|
588
|
+
(0, plugin_helper_1.readState)(state, fields);
|
|
589
|
+
const qstate = (0, plugin_helper_1.stateFieldsToWhere)({
|
|
678
590
|
fields,
|
|
679
591
|
state,
|
|
680
592
|
approximate: true,
|
|
@@ -688,7 +600,7 @@ module.exports = {
|
|
|
688
600
|
};
|
|
689
601
|
if (tbl.ownership_formula) {
|
|
690
602
|
const freeVars = freeVariables(tbl.ownership_formula);
|
|
691
|
-
add_free_variables_to_joinfields(freeVars, joinFields, fields);
|
|
603
|
+
(0, plugin_helper_1.add_free_variables_to_joinfields)(freeVars, joinFields, fields);
|
|
692
604
|
}
|
|
693
605
|
const rows = await tbl.getJoinedRows({
|
|
694
606
|
where: qstate,
|
|
@@ -709,19 +621,19 @@ module.exports = {
|
|
|
709
621
|
};
|
|
710
622
|
},
|
|
711
623
|
async runManyQuery(state, { where, limit, offset, joinFieldsExtra, orderBy, orderDesc }) {
|
|
712
|
-
const tbl =
|
|
624
|
+
const tbl = table_1.default.findOne({ id: table_id });
|
|
713
625
|
const fields = await tbl.getFields();
|
|
714
|
-
readState(state, fields);
|
|
715
|
-
const { joinFields, aggregations } = picked_fields_to_query(columns, fields, layout, req, tbl);
|
|
626
|
+
(0, plugin_helper_1.readState)(state, fields);
|
|
627
|
+
const { joinFields, aggregations } = (0, plugin_helper_1.picked_fields_to_query)(columns, fields, layout, req, tbl);
|
|
716
628
|
Object.assign(joinFields, joinFieldsExtra || {});
|
|
717
629
|
const stateHash = hashState(state, name);
|
|
718
|
-
const qstate = stateFieldsToWhere({
|
|
630
|
+
const qstate = (0, plugin_helper_1.stateFieldsToWhere)({
|
|
719
631
|
fields,
|
|
720
632
|
state,
|
|
721
633
|
table: tbl,
|
|
722
634
|
prefix: "a.",
|
|
723
635
|
});
|
|
724
|
-
const q = stateFieldsToQuery({ state, fields, stateHash });
|
|
636
|
+
const q = (0, plugin_helper_1.stateFieldsToQuery)({ state, fields, stateHash });
|
|
725
637
|
if (where)
|
|
726
638
|
mergeIntoWhere(qstate, where);
|
|
727
639
|
const role = req && req.user ? req.user.role_id : 100;
|
|
@@ -737,7 +649,7 @@ module.exports = {
|
|
|
737
649
|
}
|
|
738
650
|
if (tbl.ownership_formula && role > tbl.min_role_read) {
|
|
739
651
|
const freeVars = freeVariables(tbl.ownership_formula);
|
|
740
|
-
add_free_variables_to_joinfields(freeVars, joinFields, fields);
|
|
652
|
+
(0, plugin_helper_1.add_free_variables_to_joinfields)(freeVars, joinFields, fields);
|
|
741
653
|
}
|
|
742
654
|
let rows = await tbl.getJoinedRows({
|
|
743
655
|
where: qstate,
|
|
@@ -760,12 +672,12 @@ module.exports = {
|
|
|
760
672
|
return await db.withTransaction(async () => {
|
|
761
673
|
const body = req.body || {};
|
|
762
674
|
const col = columns.find((c) => c.type === "Action" && c.rndid === body.rndid && body.rndid);
|
|
763
|
-
const table =
|
|
675
|
+
const table = table_1.default.findOne({ id: table_id });
|
|
764
676
|
let row;
|
|
765
677
|
if (table.ownership_formula) {
|
|
766
678
|
const freeVars = freeVariables(table.ownership_formula);
|
|
767
679
|
const joinFields = {};
|
|
768
|
-
add_free_variables_to_joinfields(freeVars, joinFields, table.fields);
|
|
680
|
+
(0, plugin_helper_1.add_free_variables_to_joinfields)(freeVars, joinFields, table.fields);
|
|
769
681
|
row = await table.getJoinedRow({
|
|
770
682
|
where: { [table.pk_name]: body[table.pk_name] },
|
|
771
683
|
joinFields,
|
|
@@ -785,12 +697,12 @@ module.exports = {
|
|
|
785
697
|
});
|
|
786
698
|
if (!container)
|
|
787
699
|
return { json: { error: "Action not found" } };
|
|
788
|
-
const trigger =
|
|
700
|
+
const trigger = trigger_1.default.findOne({ name: body.click_action });
|
|
789
701
|
if (!trigger)
|
|
790
702
|
throw new Error(`View ${name}: Container click action ${body.click_action} not found`);
|
|
791
703
|
const result = await trigger.runWithoutRow({
|
|
792
704
|
table,
|
|
793
|
-
Table,
|
|
705
|
+
Table: table_1.default,
|
|
794
706
|
req,
|
|
795
707
|
row,
|
|
796
708
|
user: req.user,
|
|
@@ -798,7 +710,7 @@ module.exports = {
|
|
|
798
710
|
});
|
|
799
711
|
return { json: { success: "ok", ...(result || {}) } };
|
|
800
712
|
}
|
|
801
|
-
const result = await run_action_column({
|
|
713
|
+
const result = await (0, plugin_helper_1.run_action_column)({
|
|
802
714
|
col,
|
|
803
715
|
req,
|
|
804
716
|
table,
|
|
@@ -811,28 +723,6 @@ module.exports = {
|
|
|
811
723
|
return { json: { error: e.message || e } };
|
|
812
724
|
});
|
|
813
725
|
},
|
|
814
|
-
/*async authorizeGetQuery(query, table_id) {
|
|
815
|
-
let body = query || {};
|
|
816
|
-
const user_id = req.user ? req.user.id : null;
|
|
817
|
-
|
|
818
|
-
if (user_id && Object.keys(body).length == 1) {
|
|
819
|
-
const table = Table.findOne({ id: table_id });
|
|
820
|
-
if (table.ownership_field_id || table.ownership_formula) {
|
|
821
|
-
const fields = table.getFields();
|
|
822
|
-
const { uniques } = splitUniques(fields, body);
|
|
823
|
-
if (Object.keys(uniques).length > 0) {
|
|
824
|
-
const row = await table.getJoinedRows({
|
|
825
|
-
where: uniques,
|
|
826
|
-
forPublic: !req.user,
|
|
827
|
-
forUser: req.user,
|
|
828
|
-
});
|
|
829
|
-
if (row.length > 0) return true;
|
|
830
|
-
else return false;
|
|
831
|
-
}
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
return false;
|
|
835
|
-
},*/
|
|
836
726
|
}),
|
|
837
727
|
configCheck: async (view) => {
|
|
838
728
|
return await check_view_columns(view, view.configuration.columns);
|