@saltcorn/data 0.6.2-beta.5 → 0.6.3-beta.2
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/fieldviews.d.ts.map +1 -1
- package/dist/base-plugin/fieldviews.js +2 -0
- package/dist/base-plugin/fieldviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +16 -11
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +8 -8
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +25 -2
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.js +11 -1
- package/dist/base-plugin/viewtemplates/feed.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 +23 -11
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts +5 -0
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +40 -5
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +2 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +29 -9
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +8 -2
- package/dist/db/connect.js.map +1 -1
- package/dist/db/index.d.ts +6 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +6 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/state.js +4 -4
- package/dist/db/state.js.map +1 -1
- package/dist/migrate.js +1 -1
- package/dist/migrate.js.map +1 -1
- package/dist/migrations/202112282254.d.ts +3 -0
- package/dist/migrations/202112282254.d.ts.map +1 -0
- package/dist/migrations/202112282254.js +5 -0
- package/dist/migrations/202112282254.js.map +1 -0
- package/dist/models/backup.d.ts +8 -21
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/backup.js +105 -103
- package/dist/models/backup.js.map +1 -1
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +3 -1
- package/dist/models/config.js.map +1 -1
- package/dist/models/eventlog.d.ts +39 -38
- package/dist/models/eventlog.d.ts.map +1 -1
- package/dist/models/eventlog.js +14 -29
- package/dist/models/eventlog.js.map +1 -1
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +14 -3
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts +125 -121
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +125 -147
- package/dist/models/field.js.map +1 -1
- package/dist/models/fieldrepeat.d.ts +22 -20
- package/dist/models/fieldrepeat.d.ts.map +1 -1
- package/dist/models/fieldrepeat.js +6 -14
- package/dist/models/fieldrepeat.js.map +1 -1
- package/dist/models/form.d.ts +69 -50
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js +49 -49
- package/dist/models/form.js.map +1 -1
- package/dist/models/library.d.ts +29 -19
- package/dist/models/library.d.ts.map +1 -1
- package/dist/models/library.js +10 -8
- package/dist/models/library.js.map +1 -1
- package/dist/models/role.d.ts +22 -9
- package/dist/models/role.d.ts.map +1 -1
- package/dist/models/role.js +16 -8
- package/dist/models/role.js.map +1 -1
- package/dist/models/table.d.ts +98 -133
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +236 -180
- package/dist/models/table.js.map +1 -1
- package/dist/models/tenant.d.ts +6 -0
- package/dist/models/tenant.d.ts.map +1 -1
- package/dist/models/tenant.js +9 -0
- package/dist/models/tenant.js.map +1 -1
- package/dist/models/trigger.d.ts +62 -66
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +7 -33
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/view.d.ts +109 -98
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +103 -80
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow.d.ts +23 -21
- package/dist/models/workflow.d.ts.map +1 -1
- package/dist/models/workflow.js +9 -17
- package/dist/models/workflow.js.map +1 -1
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +30 -12
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/calc.test.js +13 -0
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/exact_views.test.js +214 -0
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/table.test.js +57 -2
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tsconfig.ref.tsbuildinfo +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +26 -0
- package/dist/utils.js.map +1 -1
- package/package.json +11 -5
package/dist/models/view.d.ts
CHANGED
|
@@ -1,118 +1,135 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* View Data Access Layer
|
|
3
|
+
* @category saltcorn-data
|
|
4
|
+
* @module models/view
|
|
5
|
+
* @subcategory models
|
|
6
|
+
*/
|
|
7
|
+
import Form from "./form";
|
|
8
|
+
import type { ViewTemplate, FieldLike, Tablely, RunExtra } from "@saltcorn/types/base_types";
|
|
9
|
+
import type Table from "./table";
|
|
10
|
+
import type { Where, SelectOptions } from "@saltcorn/db-common/internal";
|
|
11
|
+
import type Workflow from "./workflow";
|
|
2
12
|
/**
|
|
3
13
|
* View Class
|
|
4
14
|
* @category saltcorn-data
|
|
5
15
|
*/
|
|
6
16
|
declare class View {
|
|
17
|
+
name: string;
|
|
18
|
+
id?: number;
|
|
19
|
+
table_id?: number;
|
|
20
|
+
viewtemplate: string;
|
|
21
|
+
min_role: number;
|
|
22
|
+
viewtemplateObj?: ViewTemplate;
|
|
23
|
+
default_render_page?: string;
|
|
24
|
+
exttable_name?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
table_name?: string;
|
|
27
|
+
configuration?: any;
|
|
28
|
+
table?: Table;
|
|
29
|
+
slug?: any;
|
|
30
|
+
/**
|
|
31
|
+
* View constructor
|
|
32
|
+
* @param {object} o
|
|
33
|
+
*/
|
|
34
|
+
constructor(o: ViewCfg | View);
|
|
7
35
|
/**
|
|
8
36
|
* @param {object} where
|
|
9
37
|
* @returns {View}
|
|
10
38
|
*/
|
|
11
|
-
static findOne(where:
|
|
39
|
+
static findOne(where: Where): View | undefined;
|
|
12
40
|
/**
|
|
13
41
|
* @param where
|
|
14
42
|
* @param selectopts
|
|
15
43
|
* @returns {Promise<View[]>}
|
|
16
44
|
*/
|
|
17
|
-
static find(where:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
45
|
+
static find(where: Where, selectopts?: SelectOptions): Promise<Array<View>>;
|
|
46
|
+
/**
|
|
47
|
+
* @returns {Promise<object[]>}
|
|
48
|
+
*/
|
|
49
|
+
get_state_fields(): Promise<Array<FieldLike>>;
|
|
50
|
+
/**
|
|
51
|
+
* Get menu label
|
|
52
|
+
* @type {string|undefined}
|
|
53
|
+
*/
|
|
54
|
+
get menu_label(): string | undefined;
|
|
21
55
|
/**
|
|
22
56
|
* @param table
|
|
23
57
|
* @param pred
|
|
24
58
|
* @returns {Promise<object[]>}
|
|
25
59
|
*/
|
|
26
|
-
static find_table_views_where(table:
|
|
60
|
+
static find_table_views_where(table: number | Tablely | string, pred: FindViewsPred): Promise<Array<View>>;
|
|
61
|
+
/**
|
|
62
|
+
* @type {object}
|
|
63
|
+
*/
|
|
64
|
+
get select_option(): any;
|
|
27
65
|
/**
|
|
28
66
|
* @param {function} pred
|
|
29
67
|
* @returns {Promise<object>}
|
|
30
68
|
*/
|
|
31
|
-
static find_all_views_where(pred:
|
|
69
|
+
static find_all_views_where(pred: FindViewsPred): Promise<Array<View>>;
|
|
32
70
|
/**
|
|
33
71
|
* @param {Table|object} table
|
|
34
72
|
* @returns {Promise<View[]>}
|
|
35
73
|
*/
|
|
36
|
-
static find_possible_links_to_table(table:
|
|
74
|
+
static find_possible_links_to_table(table: number | Tablely | string): Promise<Array<View>>;
|
|
37
75
|
/**
|
|
38
76
|
* Create view in database
|
|
39
77
|
* @param v
|
|
40
78
|
* @returns {Promise<View>}
|
|
41
79
|
*/
|
|
42
|
-
static create(v:
|
|
80
|
+
static create(v: ViewCfg): Promise<View>;
|
|
81
|
+
/**
|
|
82
|
+
* Clone View
|
|
83
|
+
* @returns {Promise<View>}
|
|
84
|
+
*/
|
|
85
|
+
clone(): Promise<View>;
|
|
86
|
+
/**
|
|
87
|
+
* Delete current view from db
|
|
88
|
+
* @returns {Promise<void>}
|
|
89
|
+
*/
|
|
90
|
+
delete(): Promise<void>;
|
|
43
91
|
/**
|
|
44
92
|
* Delete list of views
|
|
45
93
|
* @param where - condition
|
|
46
94
|
* @returns {Promise<void>}
|
|
47
95
|
*/
|
|
48
|
-
static delete(where:
|
|
96
|
+
static delete(where: Where): Promise<void>;
|
|
49
97
|
/**
|
|
50
98
|
* Update View description
|
|
51
99
|
* @param v - view name
|
|
52
100
|
* @param id - id
|
|
53
101
|
* @returns {Promise<void>}
|
|
54
102
|
*/
|
|
55
|
-
static update(v: any, id:
|
|
56
|
-
/**
|
|
57
|
-
* View constructor
|
|
58
|
-
* @param {object} o
|
|
59
|
-
*/
|
|
60
|
-
constructor(o: object);
|
|
61
|
-
name: any;
|
|
62
|
-
id: any;
|
|
63
|
-
viewtemplate: any;
|
|
64
|
-
exttable_name: any;
|
|
65
|
-
description: any;
|
|
66
|
-
table_id: any;
|
|
67
|
-
table_name: any;
|
|
68
|
-
configuration: any;
|
|
69
|
-
min_role: number;
|
|
70
|
-
viewtemplateObj: any;
|
|
71
|
-
default_render_page: any;
|
|
72
|
-
/**
|
|
73
|
-
* @returns {Promise<object[]>}
|
|
74
|
-
*/
|
|
75
|
-
get_state_fields(): Promise<object[]>;
|
|
76
|
-
/**
|
|
77
|
-
* Get menu label
|
|
78
|
-
* @type {string|undefined}
|
|
79
|
-
*/
|
|
80
|
-
get menu_label(): string | undefined;
|
|
81
|
-
/**
|
|
82
|
-
* @type {object}
|
|
83
|
-
*/
|
|
84
|
-
get select_option(): object;
|
|
85
|
-
/**
|
|
86
|
-
* Clone View
|
|
87
|
-
* @returns {Promise<View>}
|
|
88
|
-
*/
|
|
89
|
-
clone(): Promise<View>;
|
|
90
|
-
/**
|
|
91
|
-
* Delete current view from db
|
|
92
|
-
* @returns {Promise<void>}
|
|
93
|
-
*/
|
|
94
|
-
delete(): Promise<void>;
|
|
103
|
+
static update(v: any, id: number): Promise<void>;
|
|
95
104
|
/**
|
|
96
105
|
* @param {*} arg
|
|
97
106
|
* @returns {Promise<object>}
|
|
98
107
|
*/
|
|
99
|
-
authorise_post(arg:
|
|
108
|
+
authorise_post(arg: {
|
|
109
|
+
body: any;
|
|
110
|
+
table_id: number;
|
|
111
|
+
req: NonNullable<any>;
|
|
112
|
+
}): Promise<boolean>;
|
|
100
113
|
/**
|
|
101
114
|
* @param {*} arg
|
|
102
115
|
* @returns {Promise<object>}
|
|
103
116
|
*/
|
|
104
|
-
authorise_get(arg:
|
|
117
|
+
authorise_get(arg: {
|
|
118
|
+
query: any;
|
|
119
|
+
table_id: number;
|
|
120
|
+
req: NonNullable<any>;
|
|
121
|
+
}): Promise<boolean>;
|
|
105
122
|
/**
|
|
106
123
|
* @returns {string}
|
|
107
124
|
*/
|
|
108
|
-
getStringsForI18n(): string;
|
|
125
|
+
getStringsForI18n(): string[];
|
|
109
126
|
/**
|
|
110
127
|
* Run (Execute) View
|
|
111
128
|
* @param query
|
|
112
129
|
* @param extraArgs
|
|
113
130
|
* @returns {Promise<*>}
|
|
114
131
|
*/
|
|
115
|
-
run(query: any, extraArgs:
|
|
132
|
+
run(query: any, extraArgs: RunExtra): Promise<any>;
|
|
116
133
|
/**
|
|
117
134
|
* @throws {InvalidConfiguration}
|
|
118
135
|
*/
|
|
@@ -123,21 +140,24 @@ declare class View {
|
|
|
123
140
|
* @param {*} res
|
|
124
141
|
* @returns {Promise<object>}
|
|
125
142
|
*/
|
|
126
|
-
run_possibly_on_page(query: any
|
|
143
|
+
run_possibly_on_page(query: NonNullable<any>, req: NonNullable<any>, res: NonNullable<any>): Promise<string>;
|
|
127
144
|
/**
|
|
128
145
|
* @param {*} query
|
|
129
146
|
* @param {*} extraArgs
|
|
130
147
|
* @throws {InvalidConfiguration}
|
|
131
148
|
* @returns {Promise<object>}
|
|
132
149
|
*/
|
|
133
|
-
runMany(query:
|
|
150
|
+
runMany(query: string, extraArgs: RunExtra): Promise<string[] | Array<{
|
|
151
|
+
html: string;
|
|
152
|
+
row: any;
|
|
153
|
+
}>>;
|
|
134
154
|
/**
|
|
135
155
|
* @param {*} query
|
|
136
156
|
* @param {*} body
|
|
137
157
|
* @param {*} extraArgs
|
|
138
158
|
* @returns {Promise<object>}
|
|
139
159
|
*/
|
|
140
|
-
runPost(query:
|
|
160
|
+
runPost(query: string, body: string, extraArgs: RunExtra): Promise<any>;
|
|
141
161
|
/**
|
|
142
162
|
* @param {*} route
|
|
143
163
|
* @param {*} body
|
|
@@ -145,60 +165,51 @@ declare class View {
|
|
|
145
165
|
* @param {*} extraArgs
|
|
146
166
|
* @returns {Promise<void>}
|
|
147
167
|
*/
|
|
148
|
-
runRoute(route:
|
|
168
|
+
runRoute(route: string, body: any, res: NonNullable<any>, extraArgs: RunExtra): Promise<any>;
|
|
149
169
|
/**
|
|
150
170
|
* @param {object} req_query
|
|
151
171
|
* @returns {object}
|
|
152
172
|
*/
|
|
153
|
-
combine_state_and_default_state(req_query:
|
|
173
|
+
combine_state_and_default_state(req_query: any): any;
|
|
154
174
|
/**
|
|
155
175
|
* @param {object} query
|
|
156
176
|
* @param {object} req
|
|
157
177
|
* @returns {Promise<Form|null>}
|
|
158
178
|
*/
|
|
159
|
-
get_state_form(query:
|
|
179
|
+
get_state_form(query: any, req: ReqFunction): Promise<Form | null>;
|
|
160
180
|
/**
|
|
161
181
|
* @param {object} req
|
|
162
182
|
* @returns {Promise<object>}
|
|
163
183
|
*/
|
|
164
|
-
get_config_flow(req:
|
|
184
|
+
get_config_flow(req: ReqFunction): Promise<Workflow>;
|
|
185
|
+
rewrite_query_from_slug(query: any, params: any): void;
|
|
165
186
|
}
|
|
187
|
+
declare type ReqFunction = {
|
|
188
|
+
__: (arg0: string) => string;
|
|
189
|
+
};
|
|
166
190
|
declare namespace View {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
export const runMany: any;
|
|
188
|
-
export const combine_state_and_default_state: any;
|
|
189
|
-
}
|
|
190
|
-
namespace static_methods {
|
|
191
|
-
export const find: any;
|
|
192
|
-
export const findOne: any;
|
|
193
|
-
export const create: any;
|
|
194
|
-
export const update: any;
|
|
195
|
-
const _delete_1: any;
|
|
196
|
-
export { _delete_1 as delete };
|
|
197
|
-
export const find_possible_links_to_table: any;
|
|
198
|
-
export const find_all_views_where: any;
|
|
199
|
-
export const find_table_views_where: any;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
191
|
+
type ViewCfg = {
|
|
192
|
+
name: string;
|
|
193
|
+
id?: number;
|
|
194
|
+
viewtemplate: string;
|
|
195
|
+
table_id?: number;
|
|
196
|
+
table?: Table;
|
|
197
|
+
exttable_name?: string;
|
|
198
|
+
description?: string;
|
|
199
|
+
table_name?: string;
|
|
200
|
+
configuration?: string | any;
|
|
201
|
+
min_role?: number;
|
|
202
|
+
is_public?: boolean;
|
|
203
|
+
default_render_page?: string;
|
|
204
|
+
slug?: any;
|
|
205
|
+
};
|
|
206
|
+
type FindViewsPred = (arg0: {
|
|
207
|
+
viewrow: View;
|
|
208
|
+
viewtemplate?: ViewTemplate;
|
|
209
|
+
state_fields: Array<FieldLike>;
|
|
210
|
+
}) => boolean;
|
|
202
211
|
}
|
|
203
|
-
|
|
212
|
+
declare type ViewCfg = View.ViewCfg;
|
|
213
|
+
declare type FindViewsPred = View.FindViewsPred;
|
|
214
|
+
export = View;
|
|
204
215
|
//# sourceMappingURL=view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../models/view.
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../models/view.ts"],"names":[],"mappings":"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"}
|
package/dist/models/view.js
CHANGED
|
@@ -5,14 +5,37 @@
|
|
|
5
5
|
* @module models/view
|
|
6
6
|
* @subcategory models
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
30
|
+
const db_1 = __importDefault(require("../db"));
|
|
31
|
+
const form_1 = __importDefault(require("./form"));
|
|
12
32
|
const { removeEmptyStrings, numberToBool, stringToJSON, InvalidConfiguration, satisfies, structuredClone, } = require("../utils");
|
|
13
33
|
const { remove_from_menu } = require("./config");
|
|
14
|
-
const
|
|
15
|
-
const {
|
|
34
|
+
const tags_1 = __importDefault(require("@saltcorn/markup/tags"));
|
|
35
|
+
const { div } = tags_1.default;
|
|
36
|
+
const markup_1 = __importDefault(require("@saltcorn/markup"));
|
|
37
|
+
const { renderForm } = markup_1.default;
|
|
38
|
+
const common_types_1 = require("@saltcorn/types/common_types");
|
|
16
39
|
/**
|
|
17
40
|
* View Class
|
|
18
41
|
* @category saltcorn-data
|
|
@@ -36,8 +59,11 @@ class View {
|
|
|
36
59
|
if (o.table_name)
|
|
37
60
|
this.table_name = o.table_name;
|
|
38
61
|
this.configuration = stringToJSON(o.configuration);
|
|
62
|
+
if (!o.min_role && !o.is_public) {
|
|
63
|
+
throw new InvalidConfiguration(`Unable to build view ${this.name}, neither 'min_role' or 'is_public' is given.`);
|
|
64
|
+
}
|
|
39
65
|
this.min_role =
|
|
40
|
-
!o.min_role &&
|
|
66
|
+
!o.min_role && typeWithDefinedMember(o, "is_public")
|
|
41
67
|
? o.is_public
|
|
42
68
|
? 10
|
|
43
69
|
: 8
|
|
@@ -45,7 +71,8 @@ class View {
|
|
|
45
71
|
const { getState } = require("../db/state");
|
|
46
72
|
this.viewtemplateObj = getState().viewtemplates[this.viewtemplate];
|
|
47
73
|
this.default_render_page = o.default_render_page;
|
|
48
|
-
|
|
74
|
+
this.table = o.table;
|
|
75
|
+
this.slug = stringToJSON(o.slug);
|
|
49
76
|
}
|
|
50
77
|
/**
|
|
51
78
|
* @param {object} where
|
|
@@ -72,14 +99,16 @@ class View {
|
|
|
72
99
|
const { getState } = require("../db/state");
|
|
73
100
|
return getState().views.map((t) => new View(t));
|
|
74
101
|
}
|
|
75
|
-
const views = await
|
|
102
|
+
const views = await db_1.default.select("_sc_views", where, selectopts);
|
|
76
103
|
return views.map((v) => new View(v));
|
|
77
104
|
}
|
|
78
105
|
/**
|
|
79
106
|
* @returns {Promise<object[]>}
|
|
80
107
|
*/
|
|
81
108
|
async get_state_fields() {
|
|
82
|
-
if (this.viewtemplateObj &&
|
|
109
|
+
if (this.viewtemplateObj &&
|
|
110
|
+
this.viewtemplateObj.get_state_fields &&
|
|
111
|
+
this.table_id) {
|
|
83
112
|
return await this.viewtemplateObj.get_state_fields(this.table_id, this.name, this.configuration);
|
|
84
113
|
}
|
|
85
114
|
else
|
|
@@ -102,11 +131,11 @@ class View {
|
|
|
102
131
|
*/
|
|
103
132
|
static async find_table_views_where(table, pred) {
|
|
104
133
|
var link_view_opts = [];
|
|
105
|
-
const link_views = await View.find(table
|
|
134
|
+
const link_views = await View.find(typeWithDefinedMember(table, "id")
|
|
106
135
|
? {
|
|
107
136
|
table_id: table.id,
|
|
108
137
|
}
|
|
109
|
-
: table
|
|
138
|
+
: typeWithDefinedMember(table, "name")
|
|
110
139
|
? { exttable_name: table.name }
|
|
111
140
|
: typeof table === "string"
|
|
112
141
|
? { exttable_name: table }
|
|
@@ -174,8 +203,9 @@ class View {
|
|
|
174
203
|
v.min_role = v.is_public ? 10 : 8;
|
|
175
204
|
delete v.is_public;
|
|
176
205
|
}
|
|
206
|
+
const { table, ...row } = v;
|
|
177
207
|
// insert view defintion into _sc_views
|
|
178
|
-
const id = await
|
|
208
|
+
const id = await db_1.default.insert("_sc_views", row);
|
|
179
209
|
// refresh views list cache
|
|
180
210
|
await require("../db/state").getState().refresh_views();
|
|
181
211
|
return new View({ id, ...v });
|
|
@@ -207,10 +237,13 @@ class View {
|
|
|
207
237
|
* @returns {Promise<void>}
|
|
208
238
|
*/
|
|
209
239
|
async delete() {
|
|
210
|
-
if (this.viewtemplateObj &&
|
|
240
|
+
if (this.viewtemplateObj &&
|
|
241
|
+
this.viewtemplateObj.on_delete &&
|
|
242
|
+
this.table_id &&
|
|
243
|
+
this.configuration)
|
|
211
244
|
await this.viewtemplateObj.on_delete(this.table_id, this.name, this.configuration);
|
|
212
245
|
// delete view from _sc_view
|
|
213
|
-
await
|
|
246
|
+
await db_1.default.deleteWhere("_sc_views", { id: this.id });
|
|
214
247
|
// remove view from menu
|
|
215
248
|
await remove_from_menu({ name: this.name, type: "View" });
|
|
216
249
|
// fresh view list cache
|
|
@@ -234,7 +267,7 @@ class View {
|
|
|
234
267
|
*/
|
|
235
268
|
static async update(v, id) {
|
|
236
269
|
// update view description
|
|
237
|
-
await
|
|
270
|
+
await db_1.default.update("_sc_views", v, id);
|
|
238
271
|
// fresh view list cache
|
|
239
272
|
await require("../db/state").getState().refresh_views();
|
|
240
273
|
}
|
|
@@ -243,7 +276,7 @@ class View {
|
|
|
243
276
|
* @returns {Promise<object>}
|
|
244
277
|
*/
|
|
245
278
|
async authorise_post(arg) {
|
|
246
|
-
if (!this.viewtemplateObj
|
|
279
|
+
if (!this.viewtemplateObj?.authorise_post)
|
|
247
280
|
return false;
|
|
248
281
|
return await this.viewtemplateObj.authorise_post(arg);
|
|
249
282
|
}
|
|
@@ -252,7 +285,7 @@ class View {
|
|
|
252
285
|
* @returns {Promise<object>}
|
|
253
286
|
*/
|
|
254
287
|
async authorise_get(arg) {
|
|
255
|
-
if (!this.viewtemplateObj
|
|
288
|
+
if (!this.viewtemplateObj?.authorise_get)
|
|
256
289
|
return false;
|
|
257
290
|
return await this.viewtemplateObj.authorise_get(arg);
|
|
258
291
|
}
|
|
@@ -272,8 +305,9 @@ class View {
|
|
|
272
305
|
*/
|
|
273
306
|
async run(query, extraArgs) {
|
|
274
307
|
this.check_viewtemplate();
|
|
308
|
+
const table_id = this.exttable_name || this.table_id;
|
|
275
309
|
try {
|
|
276
|
-
return await this.viewtemplateObj.run(
|
|
310
|
+
return await this.viewtemplateObj.run(table_id, this.name, this.configuration, removeEmptyStrings(query), extraArgs);
|
|
277
311
|
}
|
|
278
312
|
catch (error) {
|
|
279
313
|
error.message = `In ${this.name} view (${this.viewtemplate} viewtemplate):\n${error.message}`;
|
|
@@ -319,17 +353,26 @@ class View {
|
|
|
319
353
|
async runMany(query, extraArgs) {
|
|
320
354
|
this.check_viewtemplate();
|
|
321
355
|
try {
|
|
322
|
-
if (this.viewtemplateObj
|
|
356
|
+
if (this.viewtemplateObj?.runMany) {
|
|
357
|
+
if (!this.table_id) {
|
|
358
|
+
throw new InvalidConfiguration(`Unable to call runMany, ${this.viewtemplate} is missing 'table_id'.`);
|
|
359
|
+
}
|
|
323
360
|
return await this.viewtemplateObj.runMany(this.table_id, this.name, this.configuration, query, extraArgs);
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const
|
|
361
|
+
}
|
|
362
|
+
if (this.viewtemplateObj?.renderRows) {
|
|
363
|
+
const Table = (await Promise.resolve().then(() => __importStar(require("./table")))).default;
|
|
364
|
+
const { stateFieldsToWhere } = await Promise.resolve().then(() => __importStar(require("../plugin-helper")));
|
|
327
365
|
const tbl = await Table.findOne({ id: this.table_id });
|
|
366
|
+
if (!tbl)
|
|
367
|
+
throw new Error(`Unable to find table with id ${this.table_id}`);
|
|
328
368
|
const fields = await tbl.getFields();
|
|
329
369
|
const qstate = await stateFieldsToWhere({ fields, state: query });
|
|
330
370
|
const rows = await tbl.getRows(qstate);
|
|
331
371
|
const rendered = await this.viewtemplateObj.renderRows(tbl, this.name, this.configuration, extraArgs, rows);
|
|
332
|
-
return rendered.map((html, ix) => ({
|
|
372
|
+
return rendered.map((html, ix) => ({
|
|
373
|
+
html,
|
|
374
|
+
row: rows[ix],
|
|
375
|
+
}));
|
|
333
376
|
}
|
|
334
377
|
}
|
|
335
378
|
catch (error) {
|
|
@@ -346,6 +389,10 @@ class View {
|
|
|
346
389
|
*/
|
|
347
390
|
async runPost(query, body, extraArgs) {
|
|
348
391
|
this.check_viewtemplate();
|
|
392
|
+
if (!this.viewtemplateObj.runPost)
|
|
393
|
+
throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'runPost'.`);
|
|
394
|
+
if (!this.table_id)
|
|
395
|
+
throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'table_id'.`);
|
|
349
396
|
return await this.viewtemplateObj.runPost(this.table_id, this.name, this.configuration, removeEmptyStrings(query), removeEmptyStrings(body), extraArgs);
|
|
350
397
|
}
|
|
351
398
|
/**
|
|
@@ -357,6 +404,10 @@ class View {
|
|
|
357
404
|
*/
|
|
358
405
|
async runRoute(route, body, res, extraArgs) {
|
|
359
406
|
this.check_viewtemplate();
|
|
407
|
+
if (!this.viewtemplateObj.routes)
|
|
408
|
+
throw new InvalidConfiguration(`Unable to call runRoute of view '${this.name}', ${this.viewtemplate} is missing 'routes'.`);
|
|
409
|
+
if (!this.table_id)
|
|
410
|
+
throw new InvalidConfiguration(`Unable to call runRoute, of view '${this.name}', this.table_id is not set.`);
|
|
360
411
|
const result = await this.viewtemplateObj.routes[route](this.table_id, this.name, this.configuration, body, extraArgs);
|
|
361
412
|
if (result && result.json)
|
|
362
413
|
res.json(result.json);
|
|
@@ -399,13 +450,15 @@ class View {
|
|
|
399
450
|
f.required = false;
|
|
400
451
|
if (f.label === "Anywhere" && f.name === "_fts")
|
|
401
452
|
f.label = req.__(f.label);
|
|
402
|
-
if (f.type && f.type.name === "Bool")
|
|
453
|
+
if ((0, common_types_1.instanceOfType)(f.type) && f.type.name === "Bool")
|
|
403
454
|
f.fieldview = "tristate";
|
|
404
|
-
if (
|
|
455
|
+
if ((0, common_types_1.instanceOfType)(f.type) &&
|
|
456
|
+
f.type.read &&
|
|
457
|
+
typeof query[f.name] !== "undefined") {
|
|
405
458
|
query[f.name] = f.type.read(query[f.name]);
|
|
406
459
|
}
|
|
407
460
|
});
|
|
408
|
-
const form = new
|
|
461
|
+
const form = new form_1.default({
|
|
409
462
|
methodGET: true,
|
|
410
463
|
action: `/view/${encodeURIComponent(this.name)}`,
|
|
411
464
|
fields,
|
|
@@ -426,6 +479,8 @@ class View {
|
|
|
426
479
|
*/
|
|
427
480
|
async get_config_flow(req) {
|
|
428
481
|
this.check_viewtemplate();
|
|
482
|
+
if (!this.id)
|
|
483
|
+
throw new InvalidConfiguration(`Unable to execute 'get_config_flow' of view '${this.name}', 'this.name' must be set.`);
|
|
429
484
|
const configFlow = this.viewtemplateObj.configuration_workflow(req);
|
|
430
485
|
configFlow.action = `/viewedit/config/${encodeURIComponent(this.name)}`;
|
|
431
486
|
const oldOnDone = configFlow.onDone || ((c) => c);
|
|
@@ -439,59 +494,27 @@ class View {
|
|
|
439
494
|
};
|
|
440
495
|
return configFlow;
|
|
441
496
|
}
|
|
497
|
+
rewrite_query_from_slug(query, params) {
|
|
498
|
+
let pix = 0;
|
|
499
|
+
if (this.slug && this.slug.steps && this.slug.steps.length > 0) {
|
|
500
|
+
for (const step of this.slug.steps) {
|
|
501
|
+
if (step.unique) {
|
|
502
|
+
query[step.field] = step.transform
|
|
503
|
+
? { [step.transform]: params[pix] }
|
|
504
|
+
: params[pix];
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
pix += 1;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
function typeWithDefinedMember(object, member) {
|
|
513
|
+
return (typeof object === "object" &&
|
|
514
|
+
object &&
|
|
515
|
+
member in object &&
|
|
516
|
+
object[member] !== undefined &&
|
|
517
|
+
object[member] !== null);
|
|
442
518
|
}
|
|
443
|
-
View.contract = {
|
|
444
|
-
variables: {
|
|
445
|
-
name: is.str,
|
|
446
|
-
id: is.maybe(is.posint),
|
|
447
|
-
table_id: is.maybe(is.posint),
|
|
448
|
-
viewtemplate: is.str,
|
|
449
|
-
min_role: is.posint,
|
|
450
|
-
viewtemplateObj: is.maybe(is_viewtemplate),
|
|
451
|
-
default_render_page: is.maybe(is.str),
|
|
452
|
-
},
|
|
453
|
-
methods: {
|
|
454
|
-
get_state_fields: is.fun([], is.promise(is.array(fieldlike))),
|
|
455
|
-
get_state_form: is.fun([is.obj(), is.obj({ __: is.fun(is.str, is.str) })], is.promise(is.maybe(is.class("Form")))),
|
|
456
|
-
get_config_flow: is.fun(is.obj({ __: is.fun(is.str, is.str) }), is.promise(is.class("Workflow"))),
|
|
457
|
-
delete: is.fun([], is.promise(is.undefined)),
|
|
458
|
-
menu_label: is.getter(is.maybe(is.str)),
|
|
459
|
-
run: is.fun([is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.any)),
|
|
460
|
-
runPost: is.fun([is.obj(), is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.any)),
|
|
461
|
-
runRoute: is.fun([
|
|
462
|
-
is.str,
|
|
463
|
-
is.obj(),
|
|
464
|
-
is.obj(),
|
|
465
|
-
is.obj({ req: is.defined, res: is.defined }),
|
|
466
|
-
], is.promise(is.any)),
|
|
467
|
-
runMany: is.fun([is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.array(is.obj({ html: is.defined, row: is.obj() })))),
|
|
468
|
-
combine_state_and_default_state: is.fun(is.obj(), is.obj()),
|
|
469
|
-
},
|
|
470
|
-
static_methods: {
|
|
471
|
-
find: is.fun([is.maybe(is.obj()), is.maybe(is.obj())], is.promise(is.array(is.class("View")))),
|
|
472
|
-
findOne: is.fun(is.obj(), is.maybe(is.class("View"))),
|
|
473
|
-
create: is.fun(is.obj({
|
|
474
|
-
name: is.str,
|
|
475
|
-
table_id: is.maybe(is.posint),
|
|
476
|
-
viewtemplate: is.str,
|
|
477
|
-
}), is.promise(is.class("View"))),
|
|
478
|
-
update: is.fun([is.obj(), is.posint], is.promise(is.undefined)),
|
|
479
|
-
delete: is.fun(is.obj(), is.promise(is.undefined)),
|
|
480
|
-
find_possible_links_to_table: is.fun(is.or(is.posint, is_tablely, is.str), is.promise(is.array(is.class("View")))),
|
|
481
|
-
find_all_views_where: is.fun(is.fun(is.obj({
|
|
482
|
-
viewrow: is.class("View"),
|
|
483
|
-
viewtemplate: is.obj(),
|
|
484
|
-
state_fields: is.array(fieldlike),
|
|
485
|
-
}), is.bool), is.promise(is.array(is.class("View")))),
|
|
486
|
-
find_table_views_where: is.fun([
|
|
487
|
-
is.or(is.posint, is_tablely, is.str),
|
|
488
|
-
is.fun(is.obj({
|
|
489
|
-
viewrow: is.class("View"),
|
|
490
|
-
viewtemplate: is.obj(),
|
|
491
|
-
state_fields: is.array(fieldlike),
|
|
492
|
-
}), is.bool),
|
|
493
|
-
], is.promise(is.array(is.class("View")))),
|
|
494
|
-
},
|
|
495
|
-
};
|
|
496
519
|
module.exports = View;
|
|
497
520
|
//# sourceMappingURL=view.js.map
|