@antelopejs/dms 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/implementations/dms/page.js +2 -2
  3. package/dist/implementations/dms/page.js.map +1 -1
  4. package/dist/test/antelope.test.js +16 -5
  5. package/dist/test/antelope.test.js.map +1 -1
  6. package/dist/test/api-endpoint/index.d.ts +5 -0
  7. package/dist/test/api-endpoint/index.js +8 -0
  8. package/dist/test/api-endpoint/index.js.map +1 -0
  9. package/dist/test/helpers/http.d.ts +1 -0
  10. package/dist/test/helpers/http.js +16 -4
  11. package/dist/test/helpers/http.js.map +1 -1
  12. package/dist/test/unit/implementations/dms/notify-menu-changed.test.js +21 -0
  13. package/dist/test/unit/implementations/dms/notify-menu-changed.test.js.map +1 -1
  14. package/dist/test/unit/interfaces/dms-base/table-view-form-page-urls.test.d.ts +1 -0
  15. package/dist/test/unit/interfaces/dms-base/table-view-form-page-urls.test.js +308 -0
  16. package/dist/test/unit/interfaces/dms-base/table-view-form-page-urls.test.js.map +1 -0
  17. package/dist/test/unit/interfaces/dms-base/table-view-form-redirect.test.d.ts +1 -0
  18. package/dist/test/unit/interfaces/dms-base/table-view-form-redirect.test.js +241 -0
  19. package/dist/test/unit/interfaces/dms-base/table-view-form-redirect.test.js.map +1 -0
  20. package/dist/test/unit/interfaces/dms-base/table-view-route-param-filter-defaults.test.d.ts +1 -0
  21. package/dist/test/unit/interfaces/dms-base/table-view-route-param-filter-defaults.test.js +254 -0
  22. package/dist/test/unit/interfaces/dms-base/table-view-route-param-filter-defaults.test.js.map +1 -0
  23. package/frontend-vue/layers/dms-layout/app/composables/page/useSiteLayout.ts +49 -20
  24. package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +6 -1
  25. package/frontend-vue/layers/dms-ui/app/build/composables/table/useTable.ts +2 -0
  26. package/frontend-vue/layers/dms-ui/app/build/composables/table/useTableColumns.ts +13 -7
  27. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/registerDefaultFunctions.ts +49 -20
  28. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewConfig.ts +43 -5
  29. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +23 -29
  30. package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +3 -0
  31. package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +35 -25
  32. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +5 -1
  33. package/frontend-vue/pnpm-lock.yaml +4 -4
  34. package/frontend-vue/tests/form-page-url-fill.test.ts +63 -0
  35. package/frontend-vue/tests/form-redirect-placeholders.test.ts +69 -0
  36. package/frontend-vue/tests/route-param-filter-defaults.test.ts +59 -0
  37. package/frontend-vue/tests/route-param-occurrences.test.ts +109 -0
  38. package/package.json +2 -2
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ const interface_api_1 = require("@antelopejs/interface-api");
46
+ const interface_core_1 = require("@antelopejs/interface-core");
47
+ const interface_data_api_1 = require("@antelopejs/interface-data-api");
48
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
49
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
50
+ const chai_1 = require("chai");
51
+ const pageImpl = __importStar(require("../../../../implementations/dms/page"));
52
+ const permissionsImpl = __importStar(require("../../../../implementations/dms/permissions"));
53
+ const realtimeImpl = __importStar(require("../../../../implementations/dms/realtime"));
54
+ const constants_1 = require("@antelopejs/interface-dms/constants");
55
+ const pageInterface = __importStar(require("@antelopejs/interface-dms/page"));
56
+ const page_1 = require("@antelopejs/interface-dms/page");
57
+ const permissionsInterface = __importStar(require("@antelopejs/interface-dms/permissions"));
58
+ const realtimeInterface = __importStar(require("@antelopejs/interface-dms/realtime"));
59
+ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
60
+ const grid_1 = require("@antelopejs/interface-dms/base/grid");
61
+ const table_view_1 = require("@antelopejs/interface-dms/base/table-view");
62
+ const TABLE = "form-page-url-documents";
63
+ const LOCATION = "/api/form-page-urls";
64
+ const BUILDER_URL = "/modules/automation/builder?selected=:id";
65
+ function settle() {
66
+ return new Promise((resolve) => setImmediate(resolve));
67
+ }
68
+ let Document = class Document extends interface_database_decorators_1.Table {
69
+ };
70
+ __decorate([
71
+ (0, interface_database_decorators_1.Field)("string"),
72
+ __metadata("design:type", String)
73
+ ], Document.prototype, "name", void 0);
74
+ Document = __decorate([
75
+ (0, interface_database_decorators_1.RegisterTable)(TABLE, constants_1.CORE_SCHEMA_NAME)
76
+ ], Document);
77
+ class DocumentModel extends (0, interface_database_decorators_1.BasicDataModel)(Document, TABLE) {
78
+ }
79
+ let DocumentAPI = class DocumentAPI extends (0, interface_data_api_1.DataController)(Document, { new: table_view_1.TableViewRoutes.New, edit: table_view_1.TableViewRoutes.Edit }, (0, interface_api_1.Controller)(LOCATION)) {
80
+ };
81
+ __decorate([
82
+ (0, metadata_1.ModelReference)(),
83
+ (0, interface_database_decorators_1.Model)(DocumentModel),
84
+ __metadata("design:type", DocumentModel)
85
+ ], DocumentAPI.prototype, "model", void 0);
86
+ __decorate([
87
+ (0, table_view_1.Column)({ name: "Name", type: new default_types_1.DefaultDataTypes.StringType() }),
88
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
89
+ __metadata("design:type", String)
90
+ ], DocumentAPI.prototype, "name", void 0);
91
+ DocumentAPI = __decorate([
92
+ (0, interface_data_api_1.RegisterDataController)()
93
+ ], DocumentAPI);
94
+ const defaultTable = (0, table_view_1.TableView)(DocumentAPI, {
95
+ formContainer: { type: "page" },
96
+ realtime: false,
97
+ });
98
+ const customTable = (0, table_view_1.TableView)(DocumentAPI, {
99
+ formContainer: {
100
+ type: "page",
101
+ pages: {
102
+ new: { urlSlug: "create" },
103
+ edit: { urlSlug: ":id/modify" },
104
+ view: { urlSlug: ":id", customPage: true },
105
+ },
106
+ },
107
+ realtime: false,
108
+ });
109
+ const absoluteTable = (0, table_view_1.TableView)(DocumentAPI, {
110
+ formContainer: {
111
+ type: "page",
112
+ pages: {
113
+ new: { urlSlug: "/modules/automation/builder", customPage: true },
114
+ edit: { urlSlug: BUILDER_URL, customPage: true },
115
+ view: { urlSlug: BUILDER_URL, customPage: true },
116
+ },
117
+ },
118
+ realtime: false,
119
+ });
120
+ const drawerTable = (0, table_view_1.TableView)(DocumentAPI, {
121
+ formContainer: { type: "drawer" },
122
+ realtime: false,
123
+ });
124
+ const nestedTable = (0, table_view_1.TableView)(DocumentAPI, {
125
+ formContainer: { type: "page" },
126
+ realtime: false,
127
+ });
128
+ const firstSiblingTable = (0, table_view_1.TableView)(DocumentAPI, {
129
+ formContainer: { type: "page" },
130
+ realtime: false,
131
+ });
132
+ const secondSiblingTable = (0, table_view_1.TableView)(DocumentAPI, {
133
+ formContainer: { type: "page" },
134
+ realtime: false,
135
+ });
136
+ const detailTable = (0, table_view_1.TableView)(DocumentAPI, {
137
+ formContainer: { type: "page" },
138
+ realtime: false,
139
+ });
140
+ let DefaultPage = class DefaultPage extends (0, page_1.RootPageController)("fpu-default", {
141
+ displayName: "Default form pages",
142
+ }) {
143
+ static table = defaultTable;
144
+ };
145
+ DefaultPage = __decorate([
146
+ (0, page_1.RegisterPage)()
147
+ ], DefaultPage);
148
+ let CustomPage = class CustomPage extends (0, page_1.RootPageController)("fpu-custom", {
149
+ displayName: "Custom form pages",
150
+ }) {
151
+ static table = customTable;
152
+ };
153
+ CustomPage = __decorate([
154
+ (0, page_1.RegisterPage)()
155
+ ], CustomPage);
156
+ let AbsolutePage = class AbsolutePage extends (0, page_1.RootPageController)("fpu-absolute", {
157
+ displayName: "Absolute form pages",
158
+ }) {
159
+ static table = absoluteTable;
160
+ };
161
+ AbsolutePage = __decorate([
162
+ (0, page_1.RegisterPage)()
163
+ ], AbsolutePage);
164
+ let DrawerPage = class DrawerPage extends (0, page_1.RootPageController)("fpu-drawer", {
165
+ displayName: "Drawer form container",
166
+ }) {
167
+ static table = drawerTable;
168
+ };
169
+ DrawerPage = __decorate([
170
+ (0, page_1.RegisterPage)()
171
+ ], DrawerPage);
172
+ let NestedPage = class NestedPage extends (0, page_1.RootPageController)("fpu-nested", {
173
+ displayName: "Nested table view",
174
+ }) {
175
+ static grid = (0, grid_1.Grid)({ gap: "1rem" }).child("row", (0, grid_1.GridRow)().child("table", nestedTable));
176
+ };
177
+ NestedPage = __decorate([
178
+ (0, page_1.RegisterPage)()
179
+ ], NestedPage);
180
+ let SiblingsPage = class SiblingsPage extends (0, page_1.RootPageController)("fpu-siblings", {
181
+ displayName: "Two table views",
182
+ }) {
183
+ static first = firstSiblingTable;
184
+ static second = secondSiblingTable;
185
+ };
186
+ SiblingsPage = __decorate([
187
+ (0, page_1.RegisterPage)()
188
+ ], SiblingsPage);
189
+ let DetailPage = class DetailPage extends (0, page_1.RootPageController)("fpu-detail", {
190
+ displayName: "Detail of a row",
191
+ urlSlug: "fpu-detail/:id",
192
+ }) {
193
+ static rows = detailTable;
194
+ };
195
+ DetailPage = __decorate([
196
+ (0, page_1.RegisterPage)()
197
+ ], DetailPage);
198
+ const pages = [
199
+ DefaultPage,
200
+ CustomPage,
201
+ AbsolutePage,
202
+ DrawerPage,
203
+ NestedPage,
204
+ SiblingsPage,
205
+ DetailPage,
206
+ ];
207
+ async function formPages(table) {
208
+ return (await table.serialize()).options?.formPages;
209
+ }
210
+ describe("[unit] interfaces/dms-base — serialized form page URLs", () => {
211
+ before(async () => {
212
+ (0, interface_core_1.ImplementInterface)(permissionsInterface, permissionsImpl);
213
+ (0, interface_core_1.ImplementInterface)(realtimeInterface, realtimeImpl);
214
+ (0, interface_core_1.ImplementInterface)(pageInterface, pageImpl);
215
+ await settle();
216
+ });
217
+ after(() => {
218
+ for (const page of pages) {
219
+ const { pageInfo } = (0, interface_core_1.GetMetadata)(page, page_1.PageMetadata);
220
+ if (pageInfo)
221
+ pageInterface.internal.RegisterPage.unregister(pageInfo);
222
+ }
223
+ });
224
+ it("serializes the default slugs under the key of the table view", async () => {
225
+ (0, chai_1.expect)(await formPages(defaultTable)).to.deep.equal({
226
+ new: "/fpu-default/table/new",
227
+ edit: "/fpu-default/table/:id/edit",
228
+ view: "/fpu-default/table/:id/view",
229
+ });
230
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-default/table/new")).to.not.equal(undefined);
231
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-default/table/:id/edit")).to.not.equal(undefined);
232
+ });
233
+ it("resolves a custom relative slug against the page slug, key-free", async () => {
234
+ (0, chai_1.expect)(await formPages(customTable)).to.deep.equal({
235
+ new: "/fpu-custom/create",
236
+ edit: "/fpu-custom/:id/modify",
237
+ view: "/fpu-custom/:id",
238
+ });
239
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-custom/create")).to.not.equal(undefined);
240
+ });
241
+ it("serializes a customPage entry it registers no page for", async () => {
242
+ (0, chai_1.expect)((await formPages(customTable))?.view).to.equal("/fpu-custom/:id");
243
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-custom/:id")).to.equal(undefined);
244
+ });
245
+ it("keeps an absolute slug verbatim, query string included", async () => {
246
+ (0, chai_1.expect)(await formPages(absoluteTable)).to.deep.equal({
247
+ new: "/modules/automation/builder",
248
+ edit: BUILDER_URL,
249
+ view: BUILDER_URL,
250
+ });
251
+ });
252
+ it("names a nested table view after its own key, and registers its pages", async () => {
253
+ (0, chai_1.expect)(await formPages(nestedTable)).to.deep.equal({
254
+ new: "/fpu-nested/table/new",
255
+ edit: "/fpu-nested/table/:id/edit",
256
+ view: "/fpu-nested/table/:id/view",
257
+ });
258
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-nested/table/new")).to.not.equal(undefined);
259
+ });
260
+ it("registers both table views of a page, at URLs of their own", async () => {
261
+ (0, chai_1.expect)(await formPages(firstSiblingTable)).to.deep.equal({
262
+ new: "/fpu-siblings/first/new",
263
+ edit: "/fpu-siblings/first/:id/edit",
264
+ view: "/fpu-siblings/first/:id/view",
265
+ });
266
+ (0, chai_1.expect)(await formPages(secondSiblingTable)).to.deep.equal({
267
+ new: "/fpu-siblings/second/new",
268
+ edit: "/fpu-siblings/second/:id/edit",
269
+ view: "/fpu-siblings/second/:id/view",
270
+ });
271
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-siblings/first/new")).to.not.equal(undefined);
272
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-siblings/second/new")).to.not.equal(undefined);
273
+ });
274
+ it("registers a form page below a page whose own slug is :id", async () => {
275
+ (0, chai_1.expect)(await formPages(detailTable)).to.deep.equal({
276
+ new: "/fpu-detail/:id/rows/new",
277
+ edit: "/fpu-detail/:id/rows/:id/edit",
278
+ view: "/fpu-detail/:id/rows/:id/view",
279
+ });
280
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-detail/:id/rows/:id/view")).to.not.equal(undefined);
281
+ });
282
+ it("fails the registration of two table views claiming one form URL", async () => {
283
+ const clashingPages = { new: { urlSlug: "clash" } };
284
+ const first = (0, table_view_1.TableView)(DocumentAPI, {
285
+ formContainer: { type: "page", pages: clashingPages },
286
+ realtime: false,
287
+ });
288
+ const second = (0, table_view_1.TableView)(DocumentAPI, {
289
+ formContainer: { type: "page", pages: clashingPages },
290
+ realtime: false,
291
+ });
292
+ class ClashingPage extends (0, page_1.RootPageController)("fpu-clash", {
293
+ displayName: "Clashing table views",
294
+ }) {
295
+ }
296
+ const meta = (0, interface_core_1.GetMetadata)(ClashingPage, page_1.PageMetadata);
297
+ meta.SetComponent("first", first);
298
+ meta.SetComponent("second", second);
299
+ const failure = await meta.Register().then(() => undefined, (error) => error);
300
+ (0, chai_1.expect)(failure?.message ?? "").to.match(/TableView "fpu-clash\.first" and TableView "fpu-clash\.second"/);
301
+ (0, chai_1.expect)(failure?.message ?? "").to.contain('at "/fpu-clash/clash"');
302
+ (0, chai_1.expect)((0, page_1.GetPageLayoutBySlug)("/fpu-clash")).to.equal(undefined);
303
+ });
304
+ it("serializes no form page URL when the container is not a page", async () => {
305
+ (0, chai_1.expect)(await formPages(drawerTable)).to.equal(undefined);
306
+ });
307
+ });
308
+ //# sourceMappingURL=table-view-form-page-urls.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-view-form-page-urls.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-form-page-urls.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ const interface_api_1 = require("@antelopejs/interface-api");
46
+ const interface_core_1 = require("@antelopejs/interface-core");
47
+ const interface_data_api_1 = require("@antelopejs/interface-data-api");
48
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
49
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
50
+ const chai_1 = require("chai");
51
+ const pageImpl = __importStar(require("../../../../implementations/dms/page"));
52
+ const permissionsImpl = __importStar(require("../../../../implementations/dms/permissions"));
53
+ const realtimeImpl = __importStar(require("../../../../implementations/dms/realtime"));
54
+ const constants_1 = require("@antelopejs/interface-dms/constants");
55
+ const pageInterface = __importStar(require("@antelopejs/interface-dms/page"));
56
+ const page_1 = require("@antelopejs/interface-dms/page");
57
+ const registry_1 = require("@antelopejs/interface-dms/page/registry");
58
+ const permissionsInterface = __importStar(require("@antelopejs/interface-dms/permissions"));
59
+ const realtimeInterface = __importStar(require("@antelopejs/interface-dms/realtime"));
60
+ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
61
+ const form_types_1 = require("@antelopejs/interface-dms/base/form-types");
62
+ const table_view_1 = require("@antelopejs/interface-dms/base/table-view");
63
+ const TABLE = "form-redirect-documents";
64
+ const LOCATION = "/api/form-redirect-placeholders";
65
+ function settle() {
66
+ return new Promise((resolve) => setImmediate(resolve));
67
+ }
68
+ let Document = class Document extends interface_database_decorators_1.Table {
69
+ };
70
+ __decorate([
71
+ (0, interface_database_decorators_1.Field)("string"),
72
+ __metadata("design:type", String)
73
+ ], Document.prototype, "name", void 0);
74
+ __decorate([
75
+ (0, interface_database_decorators_1.Field)("string"),
76
+ __metadata("design:type", String)
77
+ ], Document.prototype, "status", void 0);
78
+ Document = __decorate([
79
+ (0, interface_database_decorators_1.RegisterTable)(TABLE, constants_1.CORE_SCHEMA_NAME)
80
+ ], Document);
81
+ class DocumentModel extends (0, interface_database_decorators_1.BasicDataModel)(Document, TABLE) {
82
+ }
83
+ let DocumentAPI = class DocumentAPI extends (0, interface_data_api_1.DataController)(Document, { new: table_view_1.TableViewRoutes.New, edit: table_view_1.TableViewRoutes.Edit }, (0, interface_api_1.Controller)(LOCATION)) {
84
+ };
85
+ __decorate([
86
+ (0, metadata_1.ModelReference)(),
87
+ (0, interface_database_decorators_1.Model)(DocumentModel),
88
+ __metadata("design:type", DocumentModel)
89
+ ], DocumentAPI.prototype, "model", void 0);
90
+ __decorate([
91
+ (0, table_view_1.Column)({ name: "Name", type: new default_types_1.DefaultDataTypes.StringType() }),
92
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
93
+ __metadata("design:type", String)
94
+ ], DocumentAPI.prototype, "name", void 0);
95
+ DocumentAPI = __decorate([
96
+ (0, interface_data_api_1.RegisterDataController)()
97
+ ], DocumentAPI);
98
+ const QUERY_FILTER = { status: { field: "status" } };
99
+ const pageTable = () => (0, table_view_1.TableView)(DocumentAPI, {
100
+ formContainer: { type: "page" },
101
+ queryParamFilters: QUERY_FILTER,
102
+ realtime: false,
103
+ });
104
+ let DetailPage = class DetailPage extends (0, page_1.RootPageController)("frd-detail", {
105
+ displayName: "Detail of a workspace",
106
+ urlSlug: "frd-detail/:id",
107
+ }) {
108
+ static rows = pageTable();
109
+ };
110
+ DetailPage = __decorate([
111
+ (0, page_1.RegisterPage)()
112
+ ], DetailPage);
113
+ let NamedParamPage = class NamedParamPage extends (0, page_1.RootPageController)("frd-named", {
114
+ displayName: "Detail with a placeholder of its own name",
115
+ urlSlug: "frd-named/:workspace",
116
+ }) {
117
+ static rows = pageTable();
118
+ };
119
+ NamedParamPage = __decorate([
120
+ (0, page_1.RegisterPage)()
121
+ ], NamedParamPage);
122
+ let MixedParamPage = class MixedParamPage extends (0, page_1.RootPageController)("frd-mixed", {
123
+ displayName: "Detail with two distinct placeholders",
124
+ urlSlug: "frd-mixed/:project/members/:id",
125
+ }) {
126
+ static rows = pageTable();
127
+ };
128
+ MixedParamPage = __decorate([
129
+ (0, page_1.RegisterPage)()
130
+ ], MixedParamPage);
131
+ let DeepPage = class DeepPage extends (0, page_1.RootPageController)("frd-deep", {
132
+ displayName: "Page repeating its own placeholder",
133
+ urlSlug: "frd-deep/:id/sub/:id",
134
+ }) {
135
+ static rows = pageTable();
136
+ };
137
+ DeepPage = __decorate([
138
+ (0, page_1.RegisterPage)()
139
+ ], DeepPage);
140
+ let TopLevelPage = class TopLevelPage extends (0, page_1.RootPageController)("frd-top", {
141
+ displayName: "Page without a route parameter",
142
+ }) {
143
+ static rows = pageTable();
144
+ };
145
+ TopLevelPage = __decorate([
146
+ (0, page_1.RegisterPage)()
147
+ ], TopLevelPage);
148
+ let UnfilteredPage = class UnfilteredPage extends (0, page_1.RootPageController)("frd-unfiltered", {
149
+ displayName: "Table view without URL filters",
150
+ urlSlug: "frd-unfiltered/static/slug",
151
+ }) {
152
+ static rows = (0, table_view_1.TableView)(DocumentAPI, {
153
+ formContainer: { type: "page" },
154
+ realtime: false,
155
+ });
156
+ };
157
+ UnfilteredPage = __decorate([
158
+ (0, page_1.RegisterPage)()
159
+ ], UnfilteredPage);
160
+ const pages = [
161
+ DetailPage,
162
+ NamedParamPage,
163
+ MixedParamPage,
164
+ DeepPage,
165
+ TopLevelPage,
166
+ UnfilteredPage,
167
+ ];
168
+ async function formRedirects(formPageFullId) {
169
+ const form = registry_1.pageMetadataByFullId.get(formPageFullId)?.components.form;
170
+ if (!form)
171
+ throw new Error(`No form page registered as ${formPageFullId}`);
172
+ const options = (await form.serialize()).options;
173
+ return (options?.watchActions ?? [])
174
+ .filter((watch) => watch.event === form_types_1.FormEvents.SUBMIT_SUCCESS &&
175
+ watch.functionId === table_view_1.TableViewFunctions.CUSTOM_PAGE_FORM_SUCCESS)
176
+ .map((watch) => watch.params ?? {});
177
+ }
178
+ async function redirectOf(formPageFullId) {
179
+ const redirects = await formRedirects(formPageFullId);
180
+ (0, chai_1.expect)(redirects).to.have.length(1);
181
+ return redirects[0];
182
+ }
183
+ describe("[unit] interfaces/dms-base — table view form page redirect", () => {
184
+ before(async () => {
185
+ (0, interface_core_1.ImplementInterface)(permissionsInterface, permissionsImpl);
186
+ (0, interface_core_1.ImplementInterface)(realtimeInterface, realtimeImpl);
187
+ (0, interface_core_1.ImplementInterface)(pageInterface, pageImpl);
188
+ await settle();
189
+ });
190
+ after(() => {
191
+ for (const page of pages) {
192
+ const { pageInfo } = (0, interface_core_1.GetMetadata)(page, page_1.PageMetadata);
193
+ if (pageInfo)
194
+ pageInterface.internal.RegisterPage.unregister(pageInfo);
195
+ }
196
+ });
197
+ it("numbers the page parameter on an edit route repeating its name", async () => {
198
+ (0, chai_1.expect)(await redirectOf("frd-detail.rows.edit")).to.deep.equal({
199
+ url: "/frd-detail/{{params.id:1}}",
200
+ preserveQuery: ["status"],
201
+ });
202
+ });
203
+ it("keeps the bare name on a new route carrying the name once", async () => {
204
+ (0, chai_1.expect)(await redirectOf("frd-detail.rows.new")).to.deep.equal({
205
+ url: "/frd-detail/{{params.id}}",
206
+ preserveQuery: ["status"],
207
+ });
208
+ });
209
+ it("does not redirect from the view form", async () => {
210
+ (0, chai_1.expect)(await formRedirects("frd-detail.rows.view")).to.deep.equal([]);
211
+ });
212
+ it("keeps the bare name of a placeholder the form route does not repeat", async () => {
213
+ for (const kind of ["new", "edit"]) {
214
+ (0, chai_1.expect)((await redirectOf(`frd-named.rows.${kind}`)).url).to.equal("/frd-named/{{params.workspace}}");
215
+ }
216
+ (0, chai_1.expect)((await redirectOf("frd-mixed.rows.new")).url).to.equal("/frd-mixed/{{params.project}}/members/{{params.id}}");
217
+ (0, chai_1.expect)((await redirectOf("frd-mixed.rows.edit")).url).to.equal("/frd-mixed/{{params.project}}/members/{{params.id:1}}");
218
+ });
219
+ it("numbers every occurrence of a name the page slug repeats", async () => {
220
+ for (const kind of ["new", "edit"]) {
221
+ (0, chai_1.expect)((await redirectOf(`frd-deep.rows.${kind}`)).url).to.equal("/frd-deep/{{params.id:1}}/sub/{{params.id:2}}");
222
+ }
223
+ });
224
+ it("redirects to the slug of a page without route parameter as is", async () => {
225
+ for (const page of [TopLevelPage, UnfilteredPage]) {
226
+ const { pageInfo } = (0, interface_core_1.GetMetadata)(page, page_1.PageMetadata);
227
+ for (const kind of ["new", "edit"]) {
228
+ const redirect = await redirectOf(`${pageInfo.id}.rows.${kind}`);
229
+ (0, chai_1.expect)(redirect.url).to.equal(pageInfo.fullSlug);
230
+ }
231
+ }
232
+ (0, chai_1.expect)(await redirectOf("frd-top.rows.edit")).to.deep.equal({
233
+ url: "/frd-top",
234
+ preserveQuery: ["status"],
235
+ });
236
+ (0, chai_1.expect)(await redirectOf("frd-unfiltered.rows.new")).to.deep.equal({
237
+ url: "/frd-unfiltered/static/slug",
238
+ });
239
+ });
240
+ });
241
+ //# sourceMappingURL=table-view-form-redirect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-view-form-redirect.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-form-redirect.test.ts"],"names":[],"mappings":"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"}