@saltcorn/data 0.6.3-beta.0 → 0.6.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-plugin/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 +26 -26
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +6 -1
- 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 +3 -1
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/backup.js +59 -61
- package/dist/models/backup.js.map +1 -1
- package/dist/models/field.d.ts +8 -7
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +13 -17
- 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 -51
- package/dist/models/form.js.map +1 -1
- package/dist/models/role.d.ts +9 -0
- package/dist/models/role.d.ts.map +1 -1
- package/dist/models/role.js +6 -1
- package/dist/models/role.js.map +1 -1
- package/dist/models/table.d.ts +17 -5
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +69 -8
- package/dist/models/table.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 +105 -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/table.test.js +50 -2
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tsconfig.ref.tsbuildinfo +1 -1
- package/package.json +8 -5
- package/dist/common_types.d.ts +0 -28
- package/dist/common_types.d.ts.map +0 -1
- package/dist/common_types.js +0 -16
- package/dist/common_types.js.map +0 -1
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,11 @@ 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;
|
|
309
|
+
if (!table_id)
|
|
310
|
+
throw new InvalidConfiguration(`Cannot run viewtemplate ${this.viewtemplate} in view ${this.name}. 'exttable_name' and 'table_id' are missing.`);
|
|
275
311
|
try {
|
|
276
|
-
return await this.viewtemplateObj.run(
|
|
312
|
+
return await this.viewtemplateObj.run(table_id, this.name, this.configuration, removeEmptyStrings(query), extraArgs);
|
|
277
313
|
}
|
|
278
314
|
catch (error) {
|
|
279
315
|
error.message = `In ${this.name} view (${this.viewtemplate} viewtemplate):\n${error.message}`;
|
|
@@ -319,17 +355,26 @@ class View {
|
|
|
319
355
|
async runMany(query, extraArgs) {
|
|
320
356
|
this.check_viewtemplate();
|
|
321
357
|
try {
|
|
322
|
-
if (this.viewtemplateObj
|
|
358
|
+
if (this.viewtemplateObj?.runMany) {
|
|
359
|
+
if (!this.table_id) {
|
|
360
|
+
throw new InvalidConfiguration(`Unable to call runMany, ${this.viewtemplate} is missing 'table_id'.`);
|
|
361
|
+
}
|
|
323
362
|
return await this.viewtemplateObj.runMany(this.table_id, this.name, this.configuration, query, extraArgs);
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const
|
|
363
|
+
}
|
|
364
|
+
if (this.viewtemplateObj?.renderRows) {
|
|
365
|
+
const Table = (await Promise.resolve().then(() => __importStar(require("./table")))).default;
|
|
366
|
+
const { stateFieldsToWhere } = await Promise.resolve().then(() => __importStar(require("../plugin-helper")));
|
|
327
367
|
const tbl = await Table.findOne({ id: this.table_id });
|
|
368
|
+
if (!tbl)
|
|
369
|
+
throw new Error(`Unable to find table with id ${this.table_id}`);
|
|
328
370
|
const fields = await tbl.getFields();
|
|
329
371
|
const qstate = await stateFieldsToWhere({ fields, state: query });
|
|
330
372
|
const rows = await tbl.getRows(qstate);
|
|
331
373
|
const rendered = await this.viewtemplateObj.renderRows(tbl, this.name, this.configuration, extraArgs, rows);
|
|
332
|
-
return rendered.map((html, ix) => ({
|
|
374
|
+
return rendered.map((html, ix) => ({
|
|
375
|
+
html,
|
|
376
|
+
row: rows[ix],
|
|
377
|
+
}));
|
|
333
378
|
}
|
|
334
379
|
}
|
|
335
380
|
catch (error) {
|
|
@@ -346,6 +391,10 @@ class View {
|
|
|
346
391
|
*/
|
|
347
392
|
async runPost(query, body, extraArgs) {
|
|
348
393
|
this.check_viewtemplate();
|
|
394
|
+
if (!this.viewtemplateObj.runPost)
|
|
395
|
+
throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'runPost'.`);
|
|
396
|
+
if (!this.table_id)
|
|
397
|
+
throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'table_id'.`);
|
|
349
398
|
return await this.viewtemplateObj.runPost(this.table_id, this.name, this.configuration, removeEmptyStrings(query), removeEmptyStrings(body), extraArgs);
|
|
350
399
|
}
|
|
351
400
|
/**
|
|
@@ -357,6 +406,10 @@ class View {
|
|
|
357
406
|
*/
|
|
358
407
|
async runRoute(route, body, res, extraArgs) {
|
|
359
408
|
this.check_viewtemplate();
|
|
409
|
+
if (!this.viewtemplateObj.routes)
|
|
410
|
+
throw new InvalidConfiguration(`Unable to call runRoute of view '${this.name}', ${this.viewtemplate} is missing 'routes'.`);
|
|
411
|
+
if (!this.table_id)
|
|
412
|
+
throw new InvalidConfiguration(`Unable to call runRoute, of view '${this.name}', this.table_id is not set.`);
|
|
360
413
|
const result = await this.viewtemplateObj.routes[route](this.table_id, this.name, this.configuration, body, extraArgs);
|
|
361
414
|
if (result && result.json)
|
|
362
415
|
res.json(result.json);
|
|
@@ -399,13 +452,15 @@ class View {
|
|
|
399
452
|
f.required = false;
|
|
400
453
|
if (f.label === "Anywhere" && f.name === "_fts")
|
|
401
454
|
f.label = req.__(f.label);
|
|
402
|
-
if (f.type && f.type.name === "Bool")
|
|
455
|
+
if ((0, common_types_1.instanceOfType)(f.type) && f.type.name === "Bool")
|
|
403
456
|
f.fieldview = "tristate";
|
|
404
|
-
if (
|
|
457
|
+
if ((0, common_types_1.instanceOfType)(f.type) &&
|
|
458
|
+
f.type.read &&
|
|
459
|
+
typeof query[f.name] !== "undefined") {
|
|
405
460
|
query[f.name] = f.type.read(query[f.name]);
|
|
406
461
|
}
|
|
407
462
|
});
|
|
408
|
-
const form = new
|
|
463
|
+
const form = new form_1.default({
|
|
409
464
|
methodGET: true,
|
|
410
465
|
action: `/view/${encodeURIComponent(this.name)}`,
|
|
411
466
|
fields,
|
|
@@ -426,6 +481,8 @@ class View {
|
|
|
426
481
|
*/
|
|
427
482
|
async get_config_flow(req) {
|
|
428
483
|
this.check_viewtemplate();
|
|
484
|
+
if (!this.id)
|
|
485
|
+
throw new InvalidConfiguration(`Unable to execute 'get_config_flow' of view '${this.name}', 'this.name' must be set.`);
|
|
429
486
|
const configFlow = this.viewtemplateObj.configuration_workflow(req);
|
|
430
487
|
configFlow.action = `/viewedit/config/${encodeURIComponent(this.name)}`;
|
|
431
488
|
const oldOnDone = configFlow.onDone || ((c) => c);
|
|
@@ -439,59 +496,27 @@ class View {
|
|
|
439
496
|
};
|
|
440
497
|
return configFlow;
|
|
441
498
|
}
|
|
499
|
+
rewrite_query_from_slug(query, params) {
|
|
500
|
+
let pix = 0;
|
|
501
|
+
if (this.slug && this.slug.steps && this.slug.steps.length > 0) {
|
|
502
|
+
for (const step of this.slug.steps) {
|
|
503
|
+
if (step.unique) {
|
|
504
|
+
query[step.field] = step.transform
|
|
505
|
+
? { [step.transform]: params[pix] }
|
|
506
|
+
: params[pix];
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
pix += 1;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
function typeWithDefinedMember(object, member) {
|
|
515
|
+
return (typeof object === "object" &&
|
|
516
|
+
object &&
|
|
517
|
+
member in object &&
|
|
518
|
+
object[member] !== undefined &&
|
|
519
|
+
object[member] !== null);
|
|
442
520
|
}
|
|
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
521
|
module.exports = View;
|
|
497
522
|
//# sourceMappingURL=view.js.map
|