@saltcorn/data 0.7.4-beta.2 → 0.7.4
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 +1 -1
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +25 -5
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fileviews.js +1 -1
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +142 -127
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +11 -3
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +9 -4
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +71 -24
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts +2 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.js +51 -4
- package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +28 -11
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +2 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +53 -4
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts +7 -0
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.js +31 -0
- package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts +1 -0
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/room.js +4 -0
- package/dist/base-plugin/viewtemplates/room.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts +1 -0
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +24 -7
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +36 -4
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/diagram/cy_generate_utils.d.ts +16 -0
- package/dist/diagram/cy_generate_utils.d.ts.map +1 -0
- package/dist/diagram/cy_generate_utils.js +108 -0
- package/dist/diagram/cy_generate_utils.js.map +1 -0
- package/dist/diagram/cy_raster.d.ts +31 -0
- package/dist/diagram/cy_raster.d.ts.map +1 -0
- package/dist/diagram/cy_raster.js +310 -0
- package/dist/diagram/cy_raster.js.map +1 -0
- package/dist/diagram/node.d.ts +19 -0
- package/dist/diagram/node.d.ts.map +1 -0
- package/dist/diagram/node.js +22 -0
- package/dist/diagram/node.js.map +1 -0
- package/dist/diagram/node_extract_utils.d.ts +41 -0
- package/dist/diagram/node_extract_utils.d.ts.map +1 -0
- package/dist/diagram/node_extract_utils.js +253 -0
- package/dist/diagram/node_extract_utils.js.map +1 -0
- package/dist/models/expression.d.ts +7 -0
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +53 -5
- package/dist/models/expression.js.map +1 -1
- package/dist/models/form.d.ts +2 -0
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js +1 -0
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/page.d.ts +5 -4
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +14 -6
- package/dist/models/page.js.map +1 -1
- package/dist/models/table.d.ts +6 -5
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +91 -28
- package/dist/models/table.js.map +1 -1
- package/dist/models/tag.d.ts.map +1 -1
- package/dist/models/tag.js +2 -1
- package/dist/models/tag.js.map +1 -1
- package/dist/models/trigger.d.ts +9 -2
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +30 -10
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/view.d.ts +4 -3
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +33 -6
- package/dist/models/view.js.map +1 -1
- package/dist/plugin-helper.d.ts +3 -1
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +71 -12
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/calc.test.js +44 -1
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/exact_views.test.js +1 -1
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/table.test.js +50 -0
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/view.test.js +32 -0
- package/dist/tests/view.test.js.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +32 -0
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_1 = __importDefault(require("./node"));
|
|
7
|
+
/**
|
|
8
|
+
* aligns the nodes from the application object tree on a raster
|
|
9
|
+
*/
|
|
10
|
+
class CytoscapeRaster {
|
|
11
|
+
constructor(entryNodes) {
|
|
12
|
+
this.raster = new Array();
|
|
13
|
+
this.cyIds = new Set();
|
|
14
|
+
this.links = new Array();
|
|
15
|
+
this.initRaster();
|
|
16
|
+
this.alignNodes(entryNodes);
|
|
17
|
+
}
|
|
18
|
+
initRaster() {
|
|
19
|
+
const initialRows = 2;
|
|
20
|
+
const initialCols = 2;
|
|
21
|
+
for (let row = 0; row < initialRows; row++) {
|
|
22
|
+
const row = new Array();
|
|
23
|
+
for (let col = 0; col < initialCols; col++) {
|
|
24
|
+
row.push(null);
|
|
25
|
+
}
|
|
26
|
+
this.raster.push(row);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
alignNodes(entryNodes) {
|
|
30
|
+
let startRow = 10;
|
|
31
|
+
let startCol = 2;
|
|
32
|
+
const visitor = buildVisitor(this);
|
|
33
|
+
let maxRowInLine = 0;
|
|
34
|
+
for (const node of entryNodes) {
|
|
35
|
+
const dummyRoot = new node_1.default("dummy", "");
|
|
36
|
+
dummyRoot.linked.push(node);
|
|
37
|
+
const usedSpace = traverse(dummyRoot, visitor, startRow, startCol);
|
|
38
|
+
if (usedSpace.maxRow > maxRowInLine)
|
|
39
|
+
maxRowInLine = usedSpace.maxRow;
|
|
40
|
+
if (usedSpace.maxCol < 10) {
|
|
41
|
+
startCol = usedSpace.maxCol;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
startRow = maxRowInLine;
|
|
45
|
+
startCol = 2;
|
|
46
|
+
maxRowInLine = 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
addNode(node, row, col) {
|
|
51
|
+
this.enlargeIfNecessary(row, col);
|
|
52
|
+
this.raster[row][col] = node;
|
|
53
|
+
this.cyIds.add(node.cyId);
|
|
54
|
+
}
|
|
55
|
+
addLink(source, target, type) {
|
|
56
|
+
this.links.push({
|
|
57
|
+
source,
|
|
58
|
+
target,
|
|
59
|
+
type,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* builds cytoscape.js nodes with 'data' and 'position'
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
buildCyNodes() {
|
|
67
|
+
const hSpacing = 150;
|
|
68
|
+
const vSpacing = 90;
|
|
69
|
+
const cyNodes = new Array();
|
|
70
|
+
const rowsCount = this.rowsCount();
|
|
71
|
+
const colsCount = this.colsCount();
|
|
72
|
+
for (let row = 0; row < rowsCount; row++) {
|
|
73
|
+
for (let col = 0; col < colsCount; col++) {
|
|
74
|
+
const node = this.raster[row][col];
|
|
75
|
+
if (node) {
|
|
76
|
+
cyNodes.push({
|
|
77
|
+
data: {
|
|
78
|
+
id: node.cyId,
|
|
79
|
+
type: node.type,
|
|
80
|
+
label: node.label,
|
|
81
|
+
},
|
|
82
|
+
position: {
|
|
83
|
+
x: col * hSpacing,
|
|
84
|
+
y: row * vSpacing,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return cyNodes;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* builds cytoscape.js edges with 'data'
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
buildCyEdges() {
|
|
97
|
+
return this.links.map((link) => {
|
|
98
|
+
return {
|
|
99
|
+
data: {
|
|
100
|
+
id: `${link.source.cyId}-${link.target.cyId}`,
|
|
101
|
+
source: link.source.cyId,
|
|
102
|
+
target: link.target.cyId,
|
|
103
|
+
type: link.type,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
rowsCount() {
|
|
109
|
+
return this.raster.length;
|
|
110
|
+
}
|
|
111
|
+
colsCount() {
|
|
112
|
+
return this.raster[0].length;
|
|
113
|
+
}
|
|
114
|
+
hasId(cyId) {
|
|
115
|
+
return this.cyIds.has(cyId);
|
|
116
|
+
}
|
|
117
|
+
enlargeIfNecessary(row, col) {
|
|
118
|
+
const currentColSize = this.raster[0].length;
|
|
119
|
+
if (row >= this.raster.length) {
|
|
120
|
+
const diff = row - this.raster.length;
|
|
121
|
+
for (let i = 0; i <= diff; i++) {
|
|
122
|
+
const newRow = new Array();
|
|
123
|
+
for (let j = 0; j < currentColSize; j++)
|
|
124
|
+
newRow.push(null);
|
|
125
|
+
this.raster.push(newRow);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (col >= currentColSize) {
|
|
129
|
+
const diff = col - currentColSize;
|
|
130
|
+
for (let i = 0; i < this.raster.length; i++) {
|
|
131
|
+
for (let j = 0; j <= diff; j++)
|
|
132
|
+
this.raster[i].push(null);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.default = CytoscapeRaster;
|
|
138
|
+
const buildVisitor = (raster) => {
|
|
139
|
+
const allignTablesAndTrigger = (source, tables, row, col) => {
|
|
140
|
+
const triggerRow = row;
|
|
141
|
+
let tableRow = row;
|
|
142
|
+
let triggerCol = col;
|
|
143
|
+
let tableCol = col;
|
|
144
|
+
let anyNewTables = false;
|
|
145
|
+
for (const table of tables) {
|
|
146
|
+
if (!raster.hasId(table.cyId)) {
|
|
147
|
+
anyNewTables = true;
|
|
148
|
+
for (const trigger of table.trigger) {
|
|
149
|
+
raster.addNode(trigger, triggerRow, triggerCol--);
|
|
150
|
+
raster.addLink(table, trigger, "new_target");
|
|
151
|
+
}
|
|
152
|
+
if (table.trigger.length > 0)
|
|
153
|
+
tableRow = row + 1;
|
|
154
|
+
raster.addNode(table, tableRow, tableCol);
|
|
155
|
+
raster.addLink(source, table, "new_target");
|
|
156
|
+
tableCol = triggerCol;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
raster.addLink(source, table, "existing_target");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { row: anyNewTables ? ++tableRow : tableRow, col: tableCol };
|
|
163
|
+
};
|
|
164
|
+
return {
|
|
165
|
+
linked(source, target, row, col, noLink) {
|
|
166
|
+
let insertRow = row;
|
|
167
|
+
let insertCol = col;
|
|
168
|
+
if (!raster.hasId(target.cyId)) {
|
|
169
|
+
insertCol += leftDepth(target, raster);
|
|
170
|
+
const newInsertPos = allignTablesAndTrigger(target, target.tables, insertRow, insertCol);
|
|
171
|
+
if (newInsertPos)
|
|
172
|
+
insertRow = newInsertPos.row;
|
|
173
|
+
raster.addNode(target, insertRow, insertCol);
|
|
174
|
+
if (!noLink)
|
|
175
|
+
raster.addLink(source, target, "new_target");
|
|
176
|
+
return { row: insertRow, col: insertCol };
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
raster.addLink(source, target, "existing_target");
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
embedded(source, target, row, col) {
|
|
184
|
+
let insertRow = row;
|
|
185
|
+
let insertCol = col;
|
|
186
|
+
if (!raster.hasId(target.cyId)) {
|
|
187
|
+
const newInsertPos = allignTablesAndTrigger(target, target.tables, insertRow, insertCol);
|
|
188
|
+
if (newInsertPos)
|
|
189
|
+
insertRow = newInsertPos.row;
|
|
190
|
+
raster.addNode(target, insertRow, insertCol);
|
|
191
|
+
raster.addLink(source, target, "new_target");
|
|
192
|
+
return { row: insertRow, col: insertCol };
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
raster.addLink(source, target, "existing_target");
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
const traverse = (node, visitor, startRow, startCol) => {
|
|
202
|
+
let maxRow = startRow;
|
|
203
|
+
let rootEmbedMax = maxRow;
|
|
204
|
+
let maxCol = startCol;
|
|
205
|
+
const go = (current, row, col, ignoreLinks, parentIsDummy, shiftEmbedsY) => {
|
|
206
|
+
let insertEmbedCol = col - 1;
|
|
207
|
+
let insertLinkedCol = col + 1;
|
|
208
|
+
let insertEmbedRow = row > maxRow ? row : maxRow + 1;
|
|
209
|
+
let insertLinkedRow = insertEmbedRow;
|
|
210
|
+
// put links from embeds to the parent
|
|
211
|
+
const embeddedLinks = new Array();
|
|
212
|
+
collectEmbeddedLinks(current, embeddedLinks);
|
|
213
|
+
if (shiftEmbedsY)
|
|
214
|
+
insertEmbedRow++;
|
|
215
|
+
// align embeds
|
|
216
|
+
for (const embedded of current.embedded) {
|
|
217
|
+
if (maxRow > insertEmbedRow)
|
|
218
|
+
insertEmbedRow = maxRow;
|
|
219
|
+
const rasterPos = visitor.embedded(current, embedded, insertEmbedRow, insertEmbedCol);
|
|
220
|
+
if (rasterPos) {
|
|
221
|
+
insertEmbedRow = rasterPos.row;
|
|
222
|
+
insertEmbedCol = rasterPos.col;
|
|
223
|
+
go(embedded, insertEmbedRow, insertEmbedCol, true);
|
|
224
|
+
if (++insertEmbedRow > maxRow)
|
|
225
|
+
maxRow = insertEmbedRow;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (parentIsDummy) {
|
|
229
|
+
// branches left from the root shouldn't affect right branches
|
|
230
|
+
rootEmbedMax = maxRow;
|
|
231
|
+
maxRow = 0;
|
|
232
|
+
insertEmbedRow = row;
|
|
233
|
+
insertLinkedRow = row;
|
|
234
|
+
}
|
|
235
|
+
if (!ignoreLinks) {
|
|
236
|
+
const currentIsDummy = current.type === "dummy";
|
|
237
|
+
let shiftEmbedsY = !currentIsDummy; // don't shift embeds from the first node
|
|
238
|
+
// align links
|
|
239
|
+
for (const linked of [...current.linked, ...embeddedLinks]) {
|
|
240
|
+
const rasterPos = visitor.linked(current, linked, insertLinkedRow, insertLinkedCol, currentIsDummy);
|
|
241
|
+
if (rasterPos) {
|
|
242
|
+
insertLinkedCol = rasterPos.col;
|
|
243
|
+
insertLinkedRow = rasterPos.row;
|
|
244
|
+
if (insertLinkedRow > maxRow)
|
|
245
|
+
maxRow = insertLinkedRow;
|
|
246
|
+
go(linked, insertLinkedRow, insertLinkedCol, false, currentIsDummy, shiftEmbedsY);
|
|
247
|
+
if (maxRow > insertLinkedRow)
|
|
248
|
+
insertLinkedRow = maxRow;
|
|
249
|
+
else if (++insertLinkedRow > maxRow)
|
|
250
|
+
maxRow = insertLinkedRow;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (insertLinkedCol > maxCol)
|
|
255
|
+
maxCol = insertLinkedCol;
|
|
256
|
+
if (insertEmbedCol > maxCol)
|
|
257
|
+
maxCol = insertEmbedCol;
|
|
258
|
+
};
|
|
259
|
+
go(node, startRow, startCol, false);
|
|
260
|
+
return {
|
|
261
|
+
maxRow: (rootEmbedMax > maxRow ? rootEmbedMax : maxRow) + 1,
|
|
262
|
+
maxCol,
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
const leftDepth = (node, raster) => {
|
|
266
|
+
const tblDepth = tableDepth(node, raster);
|
|
267
|
+
const embedDepth = maxEmbedDepth(node.embedded, raster);
|
|
268
|
+
return tblDepth > embedDepth ? tblDepth : embedDepth;
|
|
269
|
+
};
|
|
270
|
+
const tableDepth = (parent, raster) => {
|
|
271
|
+
const usedIds = new Set();
|
|
272
|
+
let depth = 0;
|
|
273
|
+
for (const tbl of parent.tables || []) {
|
|
274
|
+
const triggerCount = tbl.trigger.length;
|
|
275
|
+
if (!raster.hasId(tbl.cyId)) {
|
|
276
|
+
usedIds.add(tbl.cyId);
|
|
277
|
+
if (tbl.trigger.length > 1) {
|
|
278
|
+
depth += triggerCount > 1 ? triggerCount : 1;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return depth;
|
|
283
|
+
};
|
|
284
|
+
const maxEmbedDepth = (nodes, raster) => {
|
|
285
|
+
let max = 0;
|
|
286
|
+
for (const node of nodes) {
|
|
287
|
+
const depth = embedDepth(node, raster);
|
|
288
|
+
if (depth > max)
|
|
289
|
+
max = depth;
|
|
290
|
+
}
|
|
291
|
+
return max;
|
|
292
|
+
};
|
|
293
|
+
const embedDepth = (parent, raster) => {
|
|
294
|
+
if (raster.hasId(parent.cyId))
|
|
295
|
+
return 0;
|
|
296
|
+
let maxDepth = 0;
|
|
297
|
+
for (const node of parent.embedded) {
|
|
298
|
+
const branchDepth = embedDepth(node, raster);
|
|
299
|
+
maxDepth = branchDepth > maxDepth ? branchDepth : maxDepth;
|
|
300
|
+
}
|
|
301
|
+
let tblSpace = tableDepth(parent, raster);
|
|
302
|
+
return maxDepth + (tblSpace > 1 ? tblSpace : 1);
|
|
303
|
+
};
|
|
304
|
+
const collectEmbeddedLinks = (parent, result) => {
|
|
305
|
+
for (const embedded of parent.embedded) {
|
|
306
|
+
result.push(...embedded.linked);
|
|
307
|
+
collectEmbeddedLinks(embedded, result);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
//# sourceMappingURL=cy_raster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cy_raster.js","sourceRoot":"","sources":["../../diagram/cy_raster.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare type NodeType = "view" | "page" | "table" | "trigger" | "dummy";
|
|
2
|
+
/**
|
|
3
|
+
* resembles a page or a view in the application object tree
|
|
4
|
+
*/
|
|
5
|
+
export default class Node {
|
|
6
|
+
type: NodeType;
|
|
7
|
+
label: string;
|
|
8
|
+
cyId: string;
|
|
9
|
+
linked: Node[];
|
|
10
|
+
embedded: Node[];
|
|
11
|
+
tables: Node[];
|
|
12
|
+
trigger: Node[];
|
|
13
|
+
/**
|
|
14
|
+
* @param type saltcorn-entity type
|
|
15
|
+
* @param label
|
|
16
|
+
*/
|
|
17
|
+
constructor(type: NodeType, label: string);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../diagram/node.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,IAAI;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,SAAqB;IAC3B,QAAQ,SAAqB;IAC7B,MAAM,SAAqB;IAC3B,OAAO,SAAqB;IAE5B;;;OAGG;gBACS,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;CAK1C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* resembles a page or a view in the application object tree
|
|
5
|
+
*/
|
|
6
|
+
class Node {
|
|
7
|
+
/**
|
|
8
|
+
* @param type saltcorn-entity type
|
|
9
|
+
* @param label
|
|
10
|
+
*/
|
|
11
|
+
constructor(type, label) {
|
|
12
|
+
this.linked = new Array();
|
|
13
|
+
this.embedded = new Array();
|
|
14
|
+
this.tables = new Array();
|
|
15
|
+
this.trigger = new Array();
|
|
16
|
+
this.type = type;
|
|
17
|
+
this.label = label;
|
|
18
|
+
this.cyId = `${type}_${label}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = Node;
|
|
22
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../diagram/node.ts"],"names":[],"mappings":";;AAEA;;GAEG;AACH,MAAqB,IAAI;IASvB;;;OAGG;IACH,YAAY,IAAc,EAAE,KAAa;QATzC,WAAM,GAAG,IAAI,KAAK,EAAQ,CAAC;QAC3B,aAAQ,GAAG,IAAI,KAAK,EAAQ,CAAC;QAC7B,WAAM,GAAG,IAAI,KAAK,EAAQ,CAAC;QAC3B,YAAO,GAAG,IAAI,KAAK,EAAQ,CAAC;QAO1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;IACjC,CAAC;CACF;AAlBD,uBAkBC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Node from "./node";
|
|
2
|
+
import { AbstractPage as Page } from "@saltcorn/types/model-abstracts/abstract_page";
|
|
3
|
+
import type { ConnectedObjects } from "@saltcorn/types/base_types";
|
|
4
|
+
export declare type ExtractOpts = {
|
|
5
|
+
entryPages?: Array<Page>;
|
|
6
|
+
showViews: boolean;
|
|
7
|
+
viewFilterIds?: Set<number>;
|
|
8
|
+
showPages: boolean;
|
|
9
|
+
pageFilterIds?: Set<number>;
|
|
10
|
+
showTables: boolean;
|
|
11
|
+
tableFilterIds?: Set<number>;
|
|
12
|
+
showTrigger: boolean;
|
|
13
|
+
triggerFilterIds?: Set<number>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* builds object trees for 'views/pages' with branches for all possible paths
|
|
17
|
+
* @param opts filter and entry pages options.
|
|
18
|
+
* If 'entryPages' is an array, those will be the start nodes of the first graphs
|
|
19
|
+
* @returns root nodes
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildObjectTrees(opts: ExtractOpts): Promise<Array<Node>>;
|
|
22
|
+
/**
|
|
23
|
+
* extracts all 'views/pages' aligned in the layout
|
|
24
|
+
* @param layout view or page layout
|
|
25
|
+
* @returns all found objects
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractFromLayout(layout: any): ConnectedObjects;
|
|
28
|
+
/**
|
|
29
|
+
* extracts all views from 'columns'
|
|
30
|
+
* @param columns columns from a view configuration
|
|
31
|
+
* @returns all found objects
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractFromColumns(columns: any[]): ConnectedObjects;
|
|
34
|
+
/**
|
|
35
|
+
* extracts one view that is used to create new entries
|
|
36
|
+
* e.g. an embedded edit under the table of a list
|
|
37
|
+
* @param configuration config of the view
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractViewToCreate(configuration: any): ConnectedObjects | null;
|
|
41
|
+
//# sourceMappingURL=node_extract_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_extract_utils.d.ts","sourceRoot":"","sources":["../../diagram/node_extract_utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAG1B,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAOrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,oBAAY,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAgBtB;AAwBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,gBAAgB,CAqC/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAanE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,GAAG,GACjB,gBAAgB,GAAG,IAAI,CAkBzB"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.extractViewToCreate = exports.extractFromColumns = exports.extractFromLayout = exports.buildObjectTrees = void 0;
|
|
7
|
+
const node_1 = __importDefault(require("./node"));
|
|
8
|
+
const layout_1 = __importDefault(require("../models/layout"));
|
|
9
|
+
const { traverseSync } = layout_1.default;
|
|
10
|
+
const { parse_view_select, } = require("../base-plugin/viewtemplates/viewable_fields");
|
|
11
|
+
const trigger_1 = __importDefault(require("../models/trigger"));
|
|
12
|
+
/**
|
|
13
|
+
* builds object trees for 'views/pages' with branches for all possible paths
|
|
14
|
+
* @param opts filter and entry pages options.
|
|
15
|
+
* If 'entryPages' is an array, those will be the start nodes of the first graphs
|
|
16
|
+
* @returns root nodes
|
|
17
|
+
*/
|
|
18
|
+
async function buildObjectTrees(opts) {
|
|
19
|
+
const result = new Array();
|
|
20
|
+
const helper = new ExtractHelper(opts);
|
|
21
|
+
if (opts.showPages) {
|
|
22
|
+
const entryPages = opts.entryPages ? opts.entryPages : new Array();
|
|
23
|
+
const entryPageTrees = await buildTree("page", entryPages, helper);
|
|
24
|
+
const allPages = await require("../models/page").find();
|
|
25
|
+
const pageTrees = await buildTree("page", allPages, helper);
|
|
26
|
+
result.push(...entryPageTrees, ...pageTrees);
|
|
27
|
+
}
|
|
28
|
+
if (opts.showViews) {
|
|
29
|
+
const allViews = await require("../models/view").find();
|
|
30
|
+
const viewTrees = await buildTree("view", allViews, helper);
|
|
31
|
+
result.push(...viewTrees);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.buildObjectTrees = buildObjectTrees;
|
|
36
|
+
async function buildTree(type, objects, helper) {
|
|
37
|
+
const result = new Array();
|
|
38
|
+
for (const object of objects) {
|
|
39
|
+
const node = new node_1.default(type, object.name);
|
|
40
|
+
const includeObject = type === "page"
|
|
41
|
+
? includePage(object, helper.opts)
|
|
42
|
+
: includeView(object, helper.opts);
|
|
43
|
+
if (includeObject && !helper.cyIds.has(node.cyId)) {
|
|
44
|
+
helper.cyIds.add(node.cyId);
|
|
45
|
+
const connected = await object.connected_objects();
|
|
46
|
+
await helper.handleNodeConnections(node, connected);
|
|
47
|
+
result.push(node);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* extracts all 'views/pages' aligned in the layout
|
|
54
|
+
* @param layout view or page layout
|
|
55
|
+
* @returns all found objects
|
|
56
|
+
*/
|
|
57
|
+
function extractFromLayout(layout) {
|
|
58
|
+
const embeddedViews = new Array();
|
|
59
|
+
const linkedPages = new Array();
|
|
60
|
+
const linkedViews = new Array();
|
|
61
|
+
const _View = require("../models/view");
|
|
62
|
+
const _Page = require("../models/page");
|
|
63
|
+
traverseSync(layout, {
|
|
64
|
+
view(segment) {
|
|
65
|
+
const select = parse_view_select(segment.view);
|
|
66
|
+
const view = _View.findOne({ name: select.viewname });
|
|
67
|
+
if (view)
|
|
68
|
+
embeddedViews.push(view);
|
|
69
|
+
},
|
|
70
|
+
view_link(segment) {
|
|
71
|
+
const select = parse_view_select(segment.view);
|
|
72
|
+
const view = _View.findOne({ name: select.viewname });
|
|
73
|
+
if (view)
|
|
74
|
+
linkedViews.push(view);
|
|
75
|
+
},
|
|
76
|
+
link(segment) {
|
|
77
|
+
if (segment.link_src === "View") {
|
|
78
|
+
const parts = segment.url.split("/");
|
|
79
|
+
const viewName = parts[parts.length - 1];
|
|
80
|
+
const view = _View.findOne({ name: viewName });
|
|
81
|
+
if (view)
|
|
82
|
+
linkedViews.push(view);
|
|
83
|
+
}
|
|
84
|
+
else if (segment.link_src === "Page") {
|
|
85
|
+
const parts = segment.url.split("/");
|
|
86
|
+
const pagename = parts[parts.length - 1];
|
|
87
|
+
const page = _Page.findOne({ name: pagename });
|
|
88
|
+
if (page)
|
|
89
|
+
linkedPages.push(page);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
embeddedViews,
|
|
95
|
+
linkedViews,
|
|
96
|
+
linkedPages,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.extractFromLayout = extractFromLayout;
|
|
100
|
+
/**
|
|
101
|
+
* extracts all views from 'columns'
|
|
102
|
+
* @param columns columns from a view configuration
|
|
103
|
+
* @returns all found objects
|
|
104
|
+
*/
|
|
105
|
+
function extractFromColumns(columns) {
|
|
106
|
+
const linkedViews = new Array();
|
|
107
|
+
const _View = require("../models/view");
|
|
108
|
+
for (const column of columns) {
|
|
109
|
+
if (column.type === "ViewLink") {
|
|
110
|
+
const select = parse_view_select(column.view);
|
|
111
|
+
const view = _View.findOne({ name: select.viewname });
|
|
112
|
+
if (view)
|
|
113
|
+
linkedViews.push(view);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// currently only used for list
|
|
117
|
+
// TODO embedded views and linked pages for other templates
|
|
118
|
+
return { linkedViews };
|
|
119
|
+
}
|
|
120
|
+
exports.extractFromColumns = extractFromColumns;
|
|
121
|
+
/**
|
|
122
|
+
* extracts one view that is used to create new entries
|
|
123
|
+
* e.g. an embedded edit under the table of a list
|
|
124
|
+
* @param configuration config of the view
|
|
125
|
+
* @returns
|
|
126
|
+
*/
|
|
127
|
+
function extractViewToCreate(configuration) {
|
|
128
|
+
const { view_to_create, create_view_display } = configuration;
|
|
129
|
+
if (view_to_create) {
|
|
130
|
+
const View = require("../models/view");
|
|
131
|
+
const viewToCreate = View.findOne({ name: view_to_create });
|
|
132
|
+
if (viewToCreate) {
|
|
133
|
+
if (create_view_display === "Link" || create_view_display === "Popup") {
|
|
134
|
+
return {
|
|
135
|
+
linkedViews: [viewToCreate],
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return {
|
|
140
|
+
embeddedViews: [viewToCreate],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
exports.extractViewToCreate = extractViewToCreate;
|
|
148
|
+
/**
|
|
149
|
+
* helper to keep track of added nodes ('cyIds')
|
|
150
|
+
*/
|
|
151
|
+
class ExtractHelper {
|
|
152
|
+
constructor(opts) {
|
|
153
|
+
this.cyIds = new Set();
|
|
154
|
+
this.opts = opts;
|
|
155
|
+
}
|
|
156
|
+
async handleNodeConnections(oldNode, connected) {
|
|
157
|
+
if (this.opts.showViews)
|
|
158
|
+
for (const embeddedView of connected.embeddedViews || []) {
|
|
159
|
+
if (embeddedView && includeView(embeddedView, this.opts))
|
|
160
|
+
await this.addEmbeddedView(oldNode, embeddedView);
|
|
161
|
+
}
|
|
162
|
+
if (this.opts.showPages)
|
|
163
|
+
for (const linkedPage of connected.linkedPages || []) {
|
|
164
|
+
if (linkedPage && includePage(linkedPage, this.opts))
|
|
165
|
+
await this.addLinkedPageNode(oldNode, linkedPage);
|
|
166
|
+
}
|
|
167
|
+
if (this.opts.showViews)
|
|
168
|
+
for (const linkedView of connected.linkedViews || []) {
|
|
169
|
+
if (linkedView && includeView(linkedView, this.opts))
|
|
170
|
+
await this.addLinkedViewNode(oldNode, linkedView);
|
|
171
|
+
}
|
|
172
|
+
if (this.opts.showTables)
|
|
173
|
+
for (const table of connected.tables || []) {
|
|
174
|
+
if (table && includeTable(table, this.opts)) {
|
|
175
|
+
const tableNode = new node_1.default("table", table.name);
|
|
176
|
+
this.cyIds.add(tableNode.cyId);
|
|
177
|
+
if (this.opts.showTrigger) {
|
|
178
|
+
const triggerNodes = new Array();
|
|
179
|
+
for (const trigger of await trigger_1.default.getAllTableTriggers(table)) {
|
|
180
|
+
if (trigger && includeTrigger(trigger, this.opts)) {
|
|
181
|
+
const newNode = new node_1.default("trigger", trigger.name);
|
|
182
|
+
this.cyIds.add(newNode.cyId);
|
|
183
|
+
triggerNodes.push(newNode);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (triggerNodes.length > 0)
|
|
187
|
+
tableNode.trigger = triggerNodes;
|
|
188
|
+
}
|
|
189
|
+
oldNode.tables.push(tableNode);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async addLinkedViewNode(oldNode, newView) {
|
|
194
|
+
const newNode = new node_1.default("view", newView.name);
|
|
195
|
+
oldNode.linked.push(newNode);
|
|
196
|
+
if (!this.cyIds.has(newNode.cyId)) {
|
|
197
|
+
this.cyIds.add(newNode.cyId);
|
|
198
|
+
const connections = await newView.connected_objects();
|
|
199
|
+
await this.handleNodeConnections(newNode, connections);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async addEmbeddedView(oldNode, embedded) {
|
|
203
|
+
const newNode = new node_1.default("view", embedded.name);
|
|
204
|
+
oldNode.embedded.push(newNode);
|
|
205
|
+
if (!this.cyIds.has(newNode.cyId)) {
|
|
206
|
+
this.cyIds.add(newNode.cyId);
|
|
207
|
+
const connections = await embedded.connected_objects();
|
|
208
|
+
await this.handleNodeConnections(newNode, connections);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
async addLinkedPageNode(oldNode, newPage) {
|
|
212
|
+
const newNode = new node_1.default("page", newPage.name);
|
|
213
|
+
oldNode.linked.push(newNode);
|
|
214
|
+
if (!this.cyIds.has(newNode.cyId)) {
|
|
215
|
+
this.cyIds.add(newNode.cyId);
|
|
216
|
+
const connections = await newPage.connected_objects();
|
|
217
|
+
await this.handleNodeConnections(newNode, connections);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const includePage = (page, opts) => {
|
|
222
|
+
if (opts.showPages)
|
|
223
|
+
return checkFilterIds(page.id, opts.pageFilterIds);
|
|
224
|
+
else
|
|
225
|
+
return false;
|
|
226
|
+
};
|
|
227
|
+
const includeView = (view, opts) => {
|
|
228
|
+
if (opts.showViews)
|
|
229
|
+
return checkFilterIds(view.id, opts.viewFilterIds);
|
|
230
|
+
else
|
|
231
|
+
return false;
|
|
232
|
+
};
|
|
233
|
+
const includeTable = (table, opts) => {
|
|
234
|
+
if (opts.showTables)
|
|
235
|
+
return checkFilterIds(table.id, opts.tableFilterIds);
|
|
236
|
+
else
|
|
237
|
+
return false;
|
|
238
|
+
};
|
|
239
|
+
const includeTrigger = (trigger, opts) => {
|
|
240
|
+
if (opts.showTrigger)
|
|
241
|
+
return checkFilterIds(trigger.id, opts.triggerFilterIds);
|
|
242
|
+
else
|
|
243
|
+
return false;
|
|
244
|
+
};
|
|
245
|
+
const checkFilterIds = (id, filterIds) => {
|
|
246
|
+
if (!filterIds)
|
|
247
|
+
return true;
|
|
248
|
+
else if (!id)
|
|
249
|
+
return false;
|
|
250
|
+
else
|
|
251
|
+
return filterIds.has(id);
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=node_extract_utils.js.map
|