@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.
Files changed (102) hide show
  1. package/dist/base-plugin/actions.d.ts +1 -1
  2. package/dist/base-plugin/actions.d.ts.map +1 -1
  3. package/dist/base-plugin/actions.js +25 -5
  4. package/dist/base-plugin/actions.js.map +1 -1
  5. package/dist/base-plugin/fileviews.js +1 -1
  6. package/dist/base-plugin/fileviews.js.map +1 -1
  7. package/dist/base-plugin/index.d.ts +142 -127
  8. package/dist/base-plugin/index.d.ts.map +1 -1
  9. package/dist/base-plugin/types.d.ts.map +1 -1
  10. package/dist/base-plugin/types.js +11 -3
  11. package/dist/base-plugin/types.js.map +1 -1
  12. package/dist/base-plugin/viewtemplates/edit.d.ts +9 -4
  13. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  14. package/dist/base-plugin/viewtemplates/edit.js +71 -24
  15. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  16. package/dist/base-plugin/viewtemplates/feed.d.ts +2 -1
  17. package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
  18. package/dist/base-plugin/viewtemplates/feed.js +51 -4
  19. package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
  20. package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
  21. package/dist/base-plugin/viewtemplates/filter.js +28 -11
  22. package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
  23. package/dist/base-plugin/viewtemplates/list.d.ts +2 -1
  24. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
  25. package/dist/base-plugin/viewtemplates/list.js +53 -4
  26. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  27. package/dist/base-plugin/viewtemplates/listshowlist.d.ts +7 -0
  28. package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
  29. package/dist/base-plugin/viewtemplates/listshowlist.js +31 -0
  30. package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
  31. package/dist/base-plugin/viewtemplates/room.d.ts +1 -0
  32. package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
  33. package/dist/base-plugin/viewtemplates/room.js +4 -0
  34. package/dist/base-plugin/viewtemplates/room.js.map +1 -1
  35. package/dist/base-plugin/viewtemplates/show.d.ts +1 -0
  36. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  37. package/dist/base-plugin/viewtemplates/show.js +24 -7
  38. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  39. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  40. package/dist/base-plugin/viewtemplates/viewable_fields.js +36 -4
  41. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  42. package/dist/diagram/cy_generate_utils.d.ts +16 -0
  43. package/dist/diagram/cy_generate_utils.d.ts.map +1 -0
  44. package/dist/diagram/cy_generate_utils.js +108 -0
  45. package/dist/diagram/cy_generate_utils.js.map +1 -0
  46. package/dist/diagram/cy_raster.d.ts +31 -0
  47. package/dist/diagram/cy_raster.d.ts.map +1 -0
  48. package/dist/diagram/cy_raster.js +310 -0
  49. package/dist/diagram/cy_raster.js.map +1 -0
  50. package/dist/diagram/node.d.ts +19 -0
  51. package/dist/diagram/node.d.ts.map +1 -0
  52. package/dist/diagram/node.js +22 -0
  53. package/dist/diagram/node.js.map +1 -0
  54. package/dist/diagram/node_extract_utils.d.ts +41 -0
  55. package/dist/diagram/node_extract_utils.d.ts.map +1 -0
  56. package/dist/diagram/node_extract_utils.js +253 -0
  57. package/dist/diagram/node_extract_utils.js.map +1 -0
  58. package/dist/models/expression.d.ts +7 -0
  59. package/dist/models/expression.d.ts.map +1 -1
  60. package/dist/models/expression.js +53 -5
  61. package/dist/models/expression.js.map +1 -1
  62. package/dist/models/form.d.ts +2 -0
  63. package/dist/models/form.d.ts.map +1 -1
  64. package/dist/models/form.js +1 -0
  65. package/dist/models/form.js.map +1 -1
  66. package/dist/models/index.d.ts +1 -1
  67. package/dist/models/page.d.ts +5 -4
  68. package/dist/models/page.d.ts.map +1 -1
  69. package/dist/models/page.js +14 -6
  70. package/dist/models/page.js.map +1 -1
  71. package/dist/models/table.d.ts +6 -5
  72. package/dist/models/table.d.ts.map +1 -1
  73. package/dist/models/table.js +91 -28
  74. package/dist/models/table.js.map +1 -1
  75. package/dist/models/tag.d.ts.map +1 -1
  76. package/dist/models/tag.js +2 -1
  77. package/dist/models/tag.js.map +1 -1
  78. package/dist/models/trigger.d.ts +9 -2
  79. package/dist/models/trigger.d.ts.map +1 -1
  80. package/dist/models/trigger.js +30 -10
  81. package/dist/models/trigger.js.map +1 -1
  82. package/dist/models/view.d.ts +4 -3
  83. package/dist/models/view.d.ts.map +1 -1
  84. package/dist/models/view.js +33 -6
  85. package/dist/models/view.js.map +1 -1
  86. package/dist/plugin-helper.d.ts +3 -1
  87. package/dist/plugin-helper.d.ts.map +1 -1
  88. package/dist/plugin-helper.js +71 -12
  89. package/dist/plugin-helper.js.map +1 -1
  90. package/dist/tests/calc.test.js +44 -1
  91. package/dist/tests/calc.test.js.map +1 -1
  92. package/dist/tests/exact_views.test.js +1 -1
  93. package/dist/tests/exact_views.test.js.map +1 -1
  94. package/dist/tests/table.test.js +50 -0
  95. package/dist/tests/table.test.js.map +1 -1
  96. package/dist/tests/view.test.js +32 -0
  97. package/dist/tests/view.test.js.map +1 -1
  98. package/dist/utils.d.ts +3 -0
  99. package/dist/utils.d.ts.map +1 -1
  100. package/dist/utils.js +32 -0
  101. package/dist/utils.js.map +1 -1
  102. 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