@proteinjs/db-ui 1.5.16 → 1.5.18
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/CHANGELOG.md +11 -0
- package/dist/src/form/RecordForm.d.ts.map +1 -1
- package/dist/src/form/RecordForm.js +80 -6
- package/dist/src/form/RecordForm.js.map +1 -1
- package/dist/src/table/RecordTable.d.ts.map +1 -1
- package/dist/src/table/RecordTable.js +20 -4
- package/dist/src/table/RecordTable.js.map +1 -1
- package/package.json +6 -6
- package/src/form/RecordForm.tsx +115 -7
- package/src/table/RecordTable.tsx +34 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.5.18](https://github.com/proteinjs/db/compare/@proteinjs/db-ui@1.5.17...@proteinjs/db-ui@1.5.18) (2026-03-06)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* `RecordTable` should gracefully handle reference columns that for some reason don't identify as `ReferenceColumn` via `isInstanceOf`. ([83be615](https://github.com/proteinjs/db/commit/83be61590f63e71a49efe452cef4f6a9ec66f945))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [1.5.16](https://github.com/proteinjs/db/compare/@proteinjs/db-ui@1.5.15...@proteinjs/db-ui@1.5.16) (2026-02-12)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @proteinjs/db-ui
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordForm.d.ts","sourceRoot":"","sources":["../../../src/form/RecordForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,
|
|
1
|
+
{"version":3,"file":"RecordForm.d.ts","sourceRoot":"","sources":["../../../src/form/RecordForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EACL,KAAK,EACL,MAAM,EASP,MAAM,eAAe,CAAC;AAKvB,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI;IAC9C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AA4DF,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,qBAoOjF"}
|
|
@@ -49,11 +49,57 @@ var db_1 = require("@proteinjs/db");
|
|
|
49
49
|
var RecordTablePage_1 = require("../pages/RecordTablePage");
|
|
50
50
|
var RecordFormPage_1 = require("../pages/RecordFormPage");
|
|
51
51
|
var RecordFormCustomization_1 = require("./RecordFormCustomization");
|
|
52
|
+
function isObject(value) {
|
|
53
|
+
return typeof value === 'object' && value !== null;
|
|
54
|
+
}
|
|
55
|
+
function isReferenceValue(value) {
|
|
56
|
+
return (isObject(value) &&
|
|
57
|
+
typeof value['_table'] === 'string' &&
|
|
58
|
+
(typeof value['_id'] === 'string' || value['_id'] === null));
|
|
59
|
+
}
|
|
60
|
+
function isReferenceArrayValue(value) {
|
|
61
|
+
return isObject(value) && typeof value['_table'] === 'string' && Array.isArray(value['_ids']);
|
|
62
|
+
}
|
|
63
|
+
function parseReferenceId(value) {
|
|
64
|
+
if (typeof value !== 'string') {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
var id = value.trim();
|
|
68
|
+
return id ? id : null;
|
|
69
|
+
}
|
|
70
|
+
function parseReferenceIds(value) {
|
|
71
|
+
if (typeof value !== 'string') {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
return value
|
|
75
|
+
.split(',')
|
|
76
|
+
.map(function (id) { return id.trim(); })
|
|
77
|
+
.filter(Boolean);
|
|
78
|
+
}
|
|
79
|
+
function parseBooleanValue(value) {
|
|
80
|
+
if (typeof value === 'boolean') {
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
if (typeof value !== 'string') {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
var normalized = value.trim().toLowerCase();
|
|
87
|
+
if (normalized === 'true') {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
if (normalized === 'false') {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
52
95
|
function RecordForm(_a) {
|
|
53
96
|
var table = _a.table, record = _a.record;
|
|
54
97
|
var isNewRecord = typeof record === 'undefined';
|
|
55
98
|
var recordFormCustomization = (0, RecordFormCustomization_1.getRecordFormCustomization)(table.name);
|
|
56
99
|
return (react_1.default.createElement(ui_1.Form, { name: (0, string_1.default)(table.name).humanize().s, createFields: createFields(), fieldLayout: fieldLayout(), buttons: (recordFormCustomization === null || recordFormCustomization === void 0 ? void 0 : recordFormCustomization.getFormButtons) ? recordFormCustomization.getFormButtons(record, buttons()) : buttons(), onLoad: onLoad, onLoadProgressMessage: "Loading ".concat((0, string_1.default)(table.name).humanize().s) }));
|
|
100
|
+
function getColumn(columnPropertyName) {
|
|
101
|
+
return table.columns[columnPropertyName];
|
|
102
|
+
}
|
|
57
103
|
function getColumns() {
|
|
58
104
|
var _a, _b;
|
|
59
105
|
var columns = {};
|
|
@@ -62,7 +108,7 @@ function RecordForm(_a) {
|
|
|
62
108
|
columns['name'] = nameColumn;
|
|
63
109
|
}
|
|
64
110
|
for (var columnPropertyName in table.columns) {
|
|
65
|
-
var column =
|
|
111
|
+
var column = getColumn(columnPropertyName);
|
|
66
112
|
if (columnPropertyName == 'name' || columnPropertyName == 'created' || columnPropertyName == 'updated') {
|
|
67
113
|
continue;
|
|
68
114
|
}
|
|
@@ -72,8 +118,8 @@ function RecordForm(_a) {
|
|
|
72
118
|
columns[columnPropertyName] = column;
|
|
73
119
|
}
|
|
74
120
|
if (!isNewRecord) {
|
|
75
|
-
columns['created'] =
|
|
76
|
-
columns['updated'] =
|
|
121
|
+
columns['created'] = getColumn('created');
|
|
122
|
+
columns['updated'] = getColumn('updated');
|
|
77
123
|
}
|
|
78
124
|
return columns;
|
|
79
125
|
}
|
|
@@ -104,6 +150,28 @@ function RecordForm(_a) {
|
|
|
104
150
|
}
|
|
105
151
|
return Object.keys(columns);
|
|
106
152
|
}
|
|
153
|
+
function getFieldValue(columnPropertyName, fieldValue) {
|
|
154
|
+
var column = getColumn(columnPropertyName);
|
|
155
|
+
var currentValue = record ? record[columnPropertyName] : undefined;
|
|
156
|
+
if (isReferenceValue(currentValue)) {
|
|
157
|
+
var id = parseReferenceId(fieldValue);
|
|
158
|
+
return id ? new db_1.Reference(currentValue._table, id) : null;
|
|
159
|
+
}
|
|
160
|
+
if (isReferenceArrayValue(currentValue)) {
|
|
161
|
+
return new db_1.ReferenceArray(currentValue._table, parseReferenceIds(fieldValue));
|
|
162
|
+
}
|
|
163
|
+
if ((0, util_1.isInstanceOf)(column, db_1.ReferenceColumn)) {
|
|
164
|
+
var id = parseReferenceId(fieldValue);
|
|
165
|
+
return id ? new db_1.Reference(column.referenceTable, id) : null;
|
|
166
|
+
}
|
|
167
|
+
if ((0, util_1.isInstanceOf)(column, db_1.ReferenceArrayColumn)) {
|
|
168
|
+
return new db_1.ReferenceArray(column.referenceTable, parseReferenceIds(fieldValue));
|
|
169
|
+
}
|
|
170
|
+
if ((0, util_1.isInstanceOf)(column, db_1.BooleanColumn)) {
|
|
171
|
+
return parseBooleanValue(fieldValue);
|
|
172
|
+
}
|
|
173
|
+
return fieldValue;
|
|
174
|
+
}
|
|
107
175
|
function buttons() {
|
|
108
176
|
var _this = this;
|
|
109
177
|
var newRecord;
|
|
@@ -159,7 +227,7 @@ function RecordForm(_a) {
|
|
|
159
227
|
}
|
|
160
228
|
for (columnPropertyName in fields) {
|
|
161
229
|
field = fields[columnPropertyName];
|
|
162
|
-
record[columnPropertyName] = field.field.value;
|
|
230
|
+
record[columnPropertyName] = getFieldValue(columnPropertyName, field.field.value);
|
|
163
231
|
}
|
|
164
232
|
return [4 /*yield*/, (0, db_1.getDbService)().update(table, record)];
|
|
165
233
|
case 1:
|
|
@@ -194,7 +262,7 @@ function RecordForm(_a) {
|
|
|
194
262
|
record = {};
|
|
195
263
|
for (columnPropertyName in fields) {
|
|
196
264
|
field = fields[columnPropertyName];
|
|
197
|
-
record[columnPropertyName] = field.field.value;
|
|
265
|
+
record[columnPropertyName] = getFieldValue(columnPropertyName, field.field.value);
|
|
198
266
|
}
|
|
199
267
|
return [4 /*yield*/, (0, db_1.getDbService)().insert(table, record)];
|
|
200
268
|
case 1:
|
|
@@ -217,12 +285,18 @@ function RecordForm(_a) {
|
|
|
217
285
|
return [2 /*return*/];
|
|
218
286
|
}
|
|
219
287
|
for (columnPropertyName in fields) {
|
|
220
|
-
column =
|
|
288
|
+
column = getColumn(columnPropertyName);
|
|
221
289
|
field = fields[columnPropertyName].field;
|
|
222
290
|
fieldValue = record[columnPropertyName];
|
|
223
291
|
if (moment_1.default.isMoment(fieldValue)) {
|
|
224
292
|
fieldValue = fieldValue.format('ddd, MMM Do YY, h:mm:ss a');
|
|
225
293
|
}
|
|
294
|
+
else if (isReferenceValue(fieldValue)) {
|
|
295
|
+
fieldValue = fieldValue._id || '';
|
|
296
|
+
}
|
|
297
|
+
else if (isReferenceArrayValue(fieldValue)) {
|
|
298
|
+
fieldValue = fieldValue._ids.join(', ');
|
|
299
|
+
}
|
|
226
300
|
else if ((0, util_1.isInstanceOf)(column, db_1.BooleanColumn)) {
|
|
227
301
|
fieldValue = fieldValue == true ? 'True' : 'False';
|
|
228
302
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordForm.js","sourceRoot":"","sources":["../../../src/form/RecordForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,kDAAuB;AACvB,kDAA4B;AAC5B,wCAA2D;AAC3D,oCAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"RecordForm.js","sourceRoot":"","sources":["../../../src/form/RecordForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTable.d.ts","sourceRoot":"","sources":["../../../src/table/RecordTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAwD,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,
|
|
1
|
+
{"version":3,"file":"RecordTable.d.ts","sourceRoot":"","sources":["../../../src/table/RecordTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAwD,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAGL,MAAM,EAGN,KAAK,EAEN,MAAM,eAAe,CAAC;AAkBvB,KAAK,gBAAgB,GAAG,aAAa,GAAG,SAAS,CAAC;AAClD,KAAK,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAEnE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC/C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAkC1B,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBAyIvE"}
|
|
@@ -145,13 +145,32 @@ function RecordTable(props) {
|
|
|
145
145
|
}
|
|
146
146
|
function getDefaultRenderer(column) {
|
|
147
147
|
return function (value) {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
console.log((_a = column.constructor) === null || _a === void 0 ? void 0 : _a.name, (0, util_1.isInstanceOf)(column, db_1.ReferenceColumn), (0, util_1.isInstanceOf)(column, db_1.ReferenceArrayColumn), (0, util_1.isInstanceOf)(column, db_2.ObjectColumn), (0, util_1.isInstanceOf)(column, db_2.StringColumn));
|
|
150
|
+
if ((0, util_1.isInstanceOf)(column, db_1.ReferenceColumn)) {
|
|
151
|
+
return (value === null || value === void 0 ? void 0 : value._id) || '';
|
|
152
|
+
}
|
|
153
|
+
if ((0, util_1.isInstanceOf)(column, db_1.ReferenceArrayColumn)) {
|
|
154
|
+
return ((_b = value === null || value === void 0 ? void 0 : value._ids) === null || _b === void 0 ? void 0 : _b.join(', ')) || '';
|
|
155
|
+
}
|
|
156
|
+
if (value && typeof value === 'object') {
|
|
157
|
+
if ('_id' in value && typeof value._id === 'string') {
|
|
158
|
+
return value._id;
|
|
159
|
+
}
|
|
160
|
+
if ('_ids' in value && Array.isArray(value._ids)) {
|
|
161
|
+
return value._ids.join(', ');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if ((0, util_1.isInstanceOf)(column, db_2.ObjectColumn) || (0, util_1.isInstanceOf)(column, db_2.ArrayColumn)) {
|
|
165
|
+
return JSON.stringify(value);
|
|
166
|
+
}
|
|
148
167
|
if ((0, util_1.isInstanceOf)(column, db_2.IntegerColumn) ||
|
|
149
168
|
(0, util_1.isInstanceOf)(column, db_2.FloatColumn) ||
|
|
150
169
|
(0, util_1.isInstanceOf)(column, db_2.DecimalColumn)) {
|
|
151
170
|
return value != null ? value.toString() : '';
|
|
152
171
|
}
|
|
153
172
|
if ((0, util_1.isInstanceOf)(column, db_2.StringColumn)) {
|
|
154
|
-
return value
|
|
173
|
+
return value != null ? String(value) : '';
|
|
155
174
|
}
|
|
156
175
|
if ((0, util_1.isInstanceOf)(column, db_2.BooleanColumn)) {
|
|
157
176
|
return value ? '✅' : '❌';
|
|
@@ -162,9 +181,6 @@ function RecordTable(props) {
|
|
|
162
181
|
if ((0, util_1.isInstanceOf)(column, db_2.DateTimeColumn)) {
|
|
163
182
|
return value ? (0, moment_1.default)(value).format('YYYY-MM-DD HH:mm:ss') : '';
|
|
164
183
|
}
|
|
165
|
-
if ((0, util_1.isInstanceOf)(column, db_2.ObjectColumn) || (0, util_1.isInstanceOf)(column, db_2.ArrayColumn)) {
|
|
166
|
-
return JSON.stringify(value);
|
|
167
|
-
}
|
|
168
184
|
return value != null ? value.toString() : '';
|
|
169
185
|
};
|
|
170
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTable.js","sourceRoot":"","sources":["../../../src/table/RecordTable.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,sDAAkD;AAClD,kDAAuB;AACvB,oCAA8G;AAC9G,
|
|
1
|
+
{"version":3,"file":"RecordTable.js","sourceRoot":"","sources":["../../../src/table/RecordTable.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proteinjs/db-ui",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.18",
|
|
4
4
|
"description": "Db ui components",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"@emotion/styled": "11.11.0",
|
|
26
26
|
"@mui/icons-material": "5.14.11",
|
|
27
27
|
"@mui/material": "5.14.11",
|
|
28
|
-
"@proteinjs/db": "^1.21.
|
|
28
|
+
"@proteinjs/db": "^1.21.2",
|
|
29
29
|
"@proteinjs/reflection": "1.1.10",
|
|
30
|
-
"@proteinjs/ui": "4.
|
|
31
|
-
"@proteinjs/util": "1.
|
|
30
|
+
"@proteinjs/ui": "4.3.1",
|
|
31
|
+
"@proteinjs/util": "1.6.0",
|
|
32
32
|
"moment": "2.29.4",
|
|
33
33
|
"react": "18.2.0",
|
|
34
34
|
"string": "3.3.3",
|
|
35
35
|
"uuid": "8.3.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@proteinjs/reflection-build": "1.4.
|
|
38
|
+
"@proteinjs/reflection-build": "1.4.2",
|
|
39
39
|
"@types/jest": "29.5.5",
|
|
40
40
|
"@types/node": "14.0.27",
|
|
41
41
|
"@types/react": "18.2.23",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
},
|
|
53
53
|
"main": "./dist/generated/index.js",
|
|
54
54
|
"types": "./dist/generated/index.d.ts",
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "bc9b351bda25b17783596a3dde363e86dae02f92"
|
|
56
56
|
}
|
package/src/form/RecordForm.tsx
CHANGED
|
@@ -3,7 +3,18 @@ import S from 'string';
|
|
|
3
3
|
import moment from 'moment';
|
|
4
4
|
import { StringUtil, isInstanceOf } from '@proteinjs/util';
|
|
5
5
|
import { Form, Fields, textField, FormButtons } from '@proteinjs/ui';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
Table,
|
|
8
|
+
Record,
|
|
9
|
+
Column,
|
|
10
|
+
getDbService,
|
|
11
|
+
DateTimeColumn,
|
|
12
|
+
BooleanColumn,
|
|
13
|
+
Reference,
|
|
14
|
+
ReferenceArray,
|
|
15
|
+
ReferenceColumn,
|
|
16
|
+
ReferenceArrayColumn,
|
|
17
|
+
} from '@proteinjs/db';
|
|
7
18
|
import { recordTableLink } from '../pages/RecordTablePage';
|
|
8
19
|
import { recordFormLink } from '../pages/RecordFormPage';
|
|
9
20
|
import { getRecordFormCustomization } from './RecordFormCustomization';
|
|
@@ -13,9 +24,68 @@ export type RecordFormProps<T extends Record> = {
|
|
|
13
24
|
record?: T;
|
|
14
25
|
};
|
|
15
26
|
|
|
27
|
+
type PlainObject = { [key: string]: unknown };
|
|
28
|
+
|
|
29
|
+
function isObject(value: unknown): value is PlainObject {
|
|
30
|
+
return typeof value === 'object' && value !== null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isReferenceValue(value: unknown): value is { _table: string; _id: string | null } {
|
|
34
|
+
return (
|
|
35
|
+
isObject(value) &&
|
|
36
|
+
typeof value['_table'] === 'string' &&
|
|
37
|
+
(typeof value['_id'] === 'string' || value['_id'] === null)
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function isReferenceArrayValue(value: unknown): value is { _table: string; _ids: string[] } {
|
|
42
|
+
return isObject(value) && typeof value['_table'] === 'string' && Array.isArray(value['_ids']);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function parseReferenceId(value: unknown): string | null {
|
|
46
|
+
if (typeof value !== 'string') {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const id = value.trim();
|
|
51
|
+
return id ? id : null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function parseReferenceIds(value: unknown): string[] {
|
|
55
|
+
if (typeof value !== 'string') {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return value
|
|
60
|
+
.split(',')
|
|
61
|
+
.map((id) => id.trim())
|
|
62
|
+
.filter(Boolean);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function parseBooleanValue(value: unknown): boolean | null {
|
|
66
|
+
if (typeof value === 'boolean') {
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (typeof value !== 'string') {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const normalized = value.trim().toLowerCase();
|
|
75
|
+
if (normalized === 'true') {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (normalized === 'false') {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
16
85
|
export function RecordForm<T extends Record>({ table, record }: RecordFormProps<T>) {
|
|
17
86
|
const isNewRecord = typeof record === 'undefined';
|
|
18
87
|
const recordFormCustomization = getRecordFormCustomization(table.name);
|
|
88
|
+
|
|
19
89
|
return (
|
|
20
90
|
<Form
|
|
21
91
|
name={S(table.name).humanize().s}
|
|
@@ -29,6 +99,10 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
29
99
|
/>
|
|
30
100
|
);
|
|
31
101
|
|
|
102
|
+
function getColumn(columnPropertyName: string) {
|
|
103
|
+
return (table.columns as any)[columnPropertyName] as Column<T, any>;
|
|
104
|
+
}
|
|
105
|
+
|
|
32
106
|
function getColumns() {
|
|
33
107
|
const columns: { [columnPropertyName: string]: Column<T, any> } = {};
|
|
34
108
|
const nameColumn = (table.columns as any)['name'] as Column<T, any>;
|
|
@@ -37,7 +111,7 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
37
111
|
}
|
|
38
112
|
|
|
39
113
|
for (const columnPropertyName in table.columns) {
|
|
40
|
-
const column = (
|
|
114
|
+
const column = getColumn(columnPropertyName);
|
|
41
115
|
if (columnPropertyName == 'name' || columnPropertyName == 'created' || columnPropertyName == 'updated') {
|
|
42
116
|
continue;
|
|
43
117
|
}
|
|
@@ -50,8 +124,8 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
50
124
|
}
|
|
51
125
|
|
|
52
126
|
if (!isNewRecord) {
|
|
53
|
-
columns['created'] = (
|
|
54
|
-
columns['updated'] = (
|
|
127
|
+
columns['created'] = getColumn('created');
|
|
128
|
+
columns['updated'] = getColumn('updated');
|
|
55
129
|
}
|
|
56
130
|
|
|
57
131
|
return columns;
|
|
@@ -90,6 +164,35 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
90
164
|
return Object.keys(columns) as (keyof T)[];
|
|
91
165
|
}
|
|
92
166
|
|
|
167
|
+
function getFieldValue(columnPropertyName: string, fieldValue: unknown) {
|
|
168
|
+
const column = getColumn(columnPropertyName);
|
|
169
|
+
const currentValue = record ? (record as any)[columnPropertyName] : undefined;
|
|
170
|
+
|
|
171
|
+
if (isReferenceValue(currentValue)) {
|
|
172
|
+
const id = parseReferenceId(fieldValue);
|
|
173
|
+
return id ? new Reference(currentValue._table, id) : null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (isReferenceArrayValue(currentValue)) {
|
|
177
|
+
return new ReferenceArray(currentValue._table, parseReferenceIds(fieldValue));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (isInstanceOf(column, ReferenceColumn)) {
|
|
181
|
+
const id = parseReferenceId(fieldValue);
|
|
182
|
+
return id ? new Reference(column.referenceTable, id) : null;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (isInstanceOf(column, ReferenceArrayColumn)) {
|
|
186
|
+
return new ReferenceArray(column.referenceTable, parseReferenceIds(fieldValue));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (isInstanceOf(column, BooleanColumn)) {
|
|
190
|
+
return parseBooleanValue(fieldValue);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return fieldValue;
|
|
194
|
+
}
|
|
195
|
+
|
|
93
196
|
function buttons(): FormButtons<any> {
|
|
94
197
|
let newRecord: T;
|
|
95
198
|
return {
|
|
@@ -133,7 +236,7 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
133
236
|
|
|
134
237
|
for (const columnPropertyName in fields) {
|
|
135
238
|
const field = fields[columnPropertyName];
|
|
136
|
-
(record as any)[columnPropertyName] = field.field.value;
|
|
239
|
+
(record as any)[columnPropertyName] = getFieldValue(columnPropertyName, field.field.value);
|
|
137
240
|
}
|
|
138
241
|
|
|
139
242
|
await getDbService().update(table, record);
|
|
@@ -159,7 +262,7 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
159
262
|
const record: any = {};
|
|
160
263
|
for (const columnPropertyName in fields) {
|
|
161
264
|
const field = fields[columnPropertyName];
|
|
162
|
-
|
|
265
|
+
record[columnPropertyName] = getFieldValue(columnPropertyName, field.field.value);
|
|
163
266
|
}
|
|
164
267
|
|
|
165
268
|
newRecord = await getDbService().insert(table, record);
|
|
@@ -178,11 +281,16 @@ export function RecordForm<T extends Record>({ table, record }: RecordFormProps<
|
|
|
178
281
|
}
|
|
179
282
|
|
|
180
283
|
for (const columnPropertyName in fields) {
|
|
181
|
-
const column = (
|
|
284
|
+
const column = getColumn(columnPropertyName);
|
|
182
285
|
const field = fields[columnPropertyName].field;
|
|
183
286
|
let fieldValue = (record as any)[columnPropertyName];
|
|
287
|
+
|
|
184
288
|
if (moment.isMoment(fieldValue)) {
|
|
185
289
|
fieldValue = fieldValue.format('ddd, MMM Do YY, h:mm:ss a');
|
|
290
|
+
} else if (isReferenceValue(fieldValue)) {
|
|
291
|
+
fieldValue = fieldValue._id || '';
|
|
292
|
+
} else if (isReferenceArrayValue(fieldValue)) {
|
|
293
|
+
fieldValue = fieldValue._ids.join(', ');
|
|
186
294
|
} else if (isInstanceOf(column, BooleanColumn)) {
|
|
187
295
|
fieldValue = fieldValue == true ? 'True' : 'False';
|
|
188
296
|
}
|
|
@@ -2,7 +2,15 @@ import React from 'react';
|
|
|
2
2
|
import { Delete, Add } from '@mui/icons-material';
|
|
3
3
|
import S from 'string';
|
|
4
4
|
import { CustomRenderer, TableButton, Table as TableComponent, TableLoader, TableProps } from '@proteinjs/ui';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Column,
|
|
7
|
+
QueryBuilderFactory,
|
|
8
|
+
Record,
|
|
9
|
+
ReferenceArrayColumn,
|
|
10
|
+
ReferenceColumn,
|
|
11
|
+
Table,
|
|
12
|
+
getDb,
|
|
13
|
+
} from '@proteinjs/db';
|
|
6
14
|
import { QueryTableLoader } from './QueryTableLoader';
|
|
7
15
|
import { newRecordFormLink, recordFormLink } from '../pages/RecordFormPage';
|
|
8
16
|
import { recordTableLink } from '../pages/RecordTablePage';
|
|
@@ -95,6 +103,30 @@ export function RecordTable<T extends Record>(props: RecordTableProps<T>) {
|
|
|
95
103
|
|
|
96
104
|
function getDefaultRenderer(column: Column<any, any>): CustomRenderer<T, any> {
|
|
97
105
|
return (value: any) => {
|
|
106
|
+
console.log(
|
|
107
|
+
column.constructor?.name,
|
|
108
|
+
isInstanceOf(column, ReferenceColumn),
|
|
109
|
+
isInstanceOf(column, ReferenceArrayColumn),
|
|
110
|
+
isInstanceOf(column, ObjectColumn),
|
|
111
|
+
isInstanceOf(column, StringColumn)
|
|
112
|
+
);
|
|
113
|
+
if (isInstanceOf(column, ReferenceColumn)) {
|
|
114
|
+
return value?._id || '';
|
|
115
|
+
}
|
|
116
|
+
if (isInstanceOf(column, ReferenceArrayColumn)) {
|
|
117
|
+
return value?._ids?.join(', ') || '';
|
|
118
|
+
}
|
|
119
|
+
if (value && typeof value === 'object') {
|
|
120
|
+
if ('_id' in value && typeof value._id === 'string') {
|
|
121
|
+
return value._id;
|
|
122
|
+
}
|
|
123
|
+
if ('_ids' in value && Array.isArray(value._ids)) {
|
|
124
|
+
return value._ids.join(', ');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (isInstanceOf(column, ObjectColumn) || isInstanceOf(column, ArrayColumn)) {
|
|
128
|
+
return JSON.stringify(value);
|
|
129
|
+
}
|
|
98
130
|
if (
|
|
99
131
|
isInstanceOf(column, IntegerColumn) ||
|
|
100
132
|
isInstanceOf(column, FloatColumn) ||
|
|
@@ -103,7 +135,7 @@ export function RecordTable<T extends Record>(props: RecordTableProps<T>) {
|
|
|
103
135
|
return value != null ? value.toString() : '';
|
|
104
136
|
}
|
|
105
137
|
if (isInstanceOf(column, StringColumn)) {
|
|
106
|
-
return value
|
|
138
|
+
return value != null ? String(value) : '';
|
|
107
139
|
}
|
|
108
140
|
if (isInstanceOf(column, BooleanColumn)) {
|
|
109
141
|
return value ? '✅' : '❌';
|
|
@@ -114,9 +146,6 @@ export function RecordTable<T extends Record>(props: RecordTableProps<T>) {
|
|
|
114
146
|
if (isInstanceOf(column, DateTimeColumn)) {
|
|
115
147
|
return value ? moment(value).format('YYYY-MM-DD HH:mm:ss') : '';
|
|
116
148
|
}
|
|
117
|
-
if (isInstanceOf(column, ObjectColumn) || isInstanceOf(column, ArrayColumn)) {
|
|
118
|
-
return JSON.stringify(value);
|
|
119
|
-
}
|
|
120
149
|
return value != null ? value.toString() : '';
|
|
121
150
|
};
|
|
122
151
|
}
|