@wisemen/nestjs-custom-fields 1.0.4 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/custom-field-definition.d.ts +5 -0
- package/dist/factory/custom-field-definition.factory.d.ts +2 -1
- package/dist/factory/custom-field-definition.factory.js +20 -2
- package/dist/factory/custom-field-definition.factory.js.map +1 -1
- package/dist/factory/custom-field-definition.factory.unit.test.d.ts +1 -0
- package/dist/factory/custom-field-definition.factory.unit.test.js +81 -0
- package/dist/factory/custom-field-definition.factory.unit.test.js.map +1 -0
- package/dist/repositories/custom-field-definitions.repository.d.ts +1 -0
- package/dist/repositories/custom-field-definitions.repository.integration.test.js +72 -0
- package/dist/repositories/custom-field-definitions.repository.integration.test.js.map +1 -1
- package/dist/repositories/custom-field-definitions.repository.js +4 -2
- package/dist/repositories/custom-field-definitions.repository.js.map +1 -1
- package/dist/responses/custom-field-definition.response.d.ts +7 -1
- package/dist/responses/custom-field-definition.response.js +22 -0
- package/dist/responses/custom-field-definition.response.js.map +1 -1
- package/dist/responses/custom-field-definition.response.unit.test.js +11 -2
- package/dist/responses/custom-field-definition.response.unit.test.js.map +1 -1
- package/dist/typeorm/custom-field-definition.entity.d.ts +2 -1
- package/dist/typeorm/custom-field-definition.entity.js +5 -0
- package/dist/typeorm/custom-field-definition.entity.js.map +1 -1
- package/package.json +4 -4
- package/skills/getting-started/SKILL.md +42 -0
package/README.md
CHANGED
|
@@ -96,6 +96,38 @@ export class Playground extends JobContainer {
|
|
|
96
96
|
}
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
+
### Views
|
|
100
|
+
|
|
101
|
+
Use `views` to control where a definition is shown. A definition is shown in a
|
|
102
|
+
view only when that view's `key` is in its `views` array; any view not listed
|
|
103
|
+
does not show it. `order` is the field's position within that view, so the same
|
|
104
|
+
field can be first in a detail page and last in a table. The package does not
|
|
105
|
+
sort by `order`; sort by it where you render the view.
|
|
106
|
+
|
|
107
|
+
View keys are app-defined strings, like `entityType`: the package stores them
|
|
108
|
+
as-is. Keep them in an enum shared with your frontend. `views` defaults to `[]`,
|
|
109
|
+
so a definition without views is hidden everywhere. View keys must be non-empty
|
|
110
|
+
and unique per definition, and `order` must be a finite number.
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
const referenceField = customFieldDefinition(CustomFieldType.TEXT, {
|
|
114
|
+
tenantUuid: null,
|
|
115
|
+
entityType: CustomFieldEntityType.TICKET,
|
|
116
|
+
key: 'reference',
|
|
117
|
+
label: new LocalizedString([{ locale: 'en', value: 'Reference' }]),
|
|
118
|
+
description: null,
|
|
119
|
+
isRequired: false,
|
|
120
|
+
views: [
|
|
121
|
+
{ key: 'ticket-detail', order: 10 },
|
|
122
|
+
{ key: 'ticket-overview', order: 20 }
|
|
123
|
+
]
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
When upgrading from 1.x to 2.0.0, generate a migration for the new `views`
|
|
128
|
+
column and backfill `views` for your existing definitions in the same release.
|
|
129
|
+
Without a backfill, every existing definition is hidden in every view.
|
|
130
|
+
|
|
99
131
|
## Step 3: Store Values On The Entity With The Custom Column
|
|
100
132
|
|
|
101
133
|
Resolved custom field values live on your own entity. Use
|
|
@@ -216,6 +248,16 @@ On repository lookups, `tenantUuid` is optional. Omit it to work with
|
|
|
216
248
|
non-tenant definitions, or set it to retrieve tenant-specific definitions in a
|
|
217
249
|
multi-tenant setup.
|
|
218
250
|
|
|
251
|
+
Pass `view` to retrieve only the definitions shown in that view. Results are
|
|
252
|
+
ordered by `key`, with or without `view`.
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
const definitions = await repository.findDefinitions({
|
|
256
|
+
entityType: CustomFieldEntityType.TICKET,
|
|
257
|
+
view: 'ticket-overview'
|
|
258
|
+
})
|
|
259
|
+
```
|
|
260
|
+
|
|
219
261
|
After DTO parsing, validate the resolved values against the definitions that
|
|
220
262
|
apply for that entity and tenant. This is the runtime check that enforces the
|
|
221
263
|
definition rules.
|
|
@@ -4,6 +4,10 @@ import { CustomFieldRules, CustomFieldRulesByType } from '#src/custom-field-rule
|
|
|
4
4
|
import { CustomFieldChoicesModeByType, CustomFieldRulesModeByType } from '#src/custom-field-type-contract.js';
|
|
5
5
|
import { CustomFieldType } from '#src/enum/custom-field-type.enum.js';
|
|
6
6
|
import { LocalizedString } from '@wisemen/localized-string';
|
|
7
|
+
export interface CustomFieldView {
|
|
8
|
+
key: string;
|
|
9
|
+
order: number;
|
|
10
|
+
}
|
|
7
11
|
export interface CustomFieldDefinitionData {
|
|
8
12
|
uuid: CustomFieldDefinitionUuid;
|
|
9
13
|
tenantUuid: string | null;
|
|
@@ -15,6 +19,7 @@ export interface CustomFieldDefinitionData {
|
|
|
15
19
|
isRequired: boolean;
|
|
16
20
|
choices: CustomFieldChoice[] | null;
|
|
17
21
|
rules: CustomFieldRules | null;
|
|
22
|
+
views: CustomFieldView[];
|
|
18
23
|
}
|
|
19
24
|
type BaseCustomFieldDefinitionFields<T extends CustomFieldType> = Omit<CustomFieldDefinitionData, 'type' | 'choices' | 'rules'> & {
|
|
20
25
|
type: T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LocalizedString } from '@wisemen/localized-string';
|
|
2
2
|
import { CustomFieldChoice } from '#src/custom-field-choice.js';
|
|
3
|
-
import { CustomFieldDefinitionFieldsByType } from '#src/custom-field-definition.js';
|
|
3
|
+
import { CustomFieldDefinitionFieldsByType, CustomFieldView } from '#src/custom-field-definition.js';
|
|
4
4
|
import { CustomFieldRulesByType } from '#src/custom-field-rules.js';
|
|
5
5
|
import { CustomFieldChoicesModeByType, CustomFieldRulesModeByType } from '#src/custom-field-type-contract.js';
|
|
6
6
|
import { CustomFieldType } from '#src/enum/custom-field-type.enum.js';
|
|
@@ -23,6 +23,7 @@ export type CustomFieldDefinitionMetadataFields = {
|
|
|
23
23
|
label: LocalizedString;
|
|
24
24
|
description: LocalizedString | null;
|
|
25
25
|
isRequired: boolean;
|
|
26
|
+
views?: CustomFieldView[];
|
|
26
27
|
};
|
|
27
28
|
export type CustomFieldDefinitionDraft<T extends CustomFieldType = CustomFieldType> = CustomFieldDefinitionFieldsByType<T>;
|
|
28
29
|
type BaseCustomFieldInput<TType extends CustomFieldType> = CustomFieldDefinitionMetadataFields & {
|
|
@@ -39,7 +39,8 @@ function normalizeCustomFieldDefinition(definition) {
|
|
|
39
39
|
type: definition.type,
|
|
40
40
|
rules: normalizeRules(definition.type, 'rules' in definition ? definition.rules : null),
|
|
41
41
|
isRequired: definition.isRequired,
|
|
42
|
-
choices: null
|
|
42
|
+
choices: null,
|
|
43
|
+
views: definition.views ?? []
|
|
43
44
|
};
|
|
44
45
|
validateCustomFieldDefinition(customFieldDefinition);
|
|
45
46
|
return customFieldDefinition;
|
|
@@ -56,7 +57,8 @@ function normalizeCustomFieldDefinition(definition) {
|
|
|
56
57
|
type: definition.type,
|
|
57
58
|
rules: normalizeRules(definition.type, 'rules' in definition ? definition.rules : null),
|
|
58
59
|
isRequired: definition.isRequired,
|
|
59
|
-
choices: definition.choices
|
|
60
|
+
choices: definition.choices,
|
|
61
|
+
views: definition.views ?? []
|
|
60
62
|
};
|
|
61
63
|
validateCustomFieldDefinition(customFieldDefinition);
|
|
62
64
|
return customFieldDefinition;
|
|
@@ -74,6 +76,21 @@ function normalizeRules(type, rules) {
|
|
|
74
76
|
...rules
|
|
75
77
|
};
|
|
76
78
|
}
|
|
79
|
+
function validateCustomFieldViews(views) {
|
|
80
|
+
const seenKeys = new Set();
|
|
81
|
+
for (const view of views) {
|
|
82
|
+
if (view.key.trim() === '') {
|
|
83
|
+
throw new CustomFieldDefinitionError('Custom field view key can not be empty');
|
|
84
|
+
}
|
|
85
|
+
if (seenKeys.has(view.key)) {
|
|
86
|
+
throw new CustomFieldDefinitionError('Custom field view keys must be unique');
|
|
87
|
+
}
|
|
88
|
+
if (!Number.isFinite(view.order)) {
|
|
89
|
+
throw new CustomFieldDefinitionError('Custom field view order must be a finite number');
|
|
90
|
+
}
|
|
91
|
+
seenKeys.add(view.key);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
77
94
|
function validateCustomFieldDefinition(definition) {
|
|
78
95
|
if (definition.entityType.trim() === '') {
|
|
79
96
|
throw new CustomFieldDefinitionError('Custom field entityType can not be empty');
|
|
@@ -90,6 +107,7 @@ function validateCustomFieldDefinition(definition) {
|
|
|
90
107
|
if (definition.rules !== null && definition.rules.type !== definition.type) {
|
|
91
108
|
throw new CustomFieldDefinitionError('Custom field rules must match the field type');
|
|
92
109
|
}
|
|
110
|
+
validateCustomFieldViews(definition.views);
|
|
93
111
|
switch (definition.type) {
|
|
94
112
|
case CustomFieldType.TEXT:
|
|
95
113
|
validateTextCustomFieldDefinition(definition);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definition.factory.js","sourceRoot":"","sources":["../../lib/factory/custom-field-definition.factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAG9F,OAAO,EAAE,oCAAoC,EAAE,MAAM,kEAAkE,CAAA;AACvH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4DAA4D,CAAA;AAC9G,OAAO,EAAE,qCAAqC,EAAE,MAAM,oEAAoE,CAAA;AAC1H,OAAO,EAAE,wCAAwC,EAAE,MAAM,4EAA4E,CAAA;AACrI,OAAO,EAAE,mCAAmC,EAAE,MAAM,gEAAgE,CAAA;AACpH,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAA;AACxI,OAAO,EAAE,sCAAsC,EAAE,MAAM,wEAAwE,CAAA;AAC/H,OAAO,EAAE,iCAAiC,EAAE,MAAM,4DAA4D,CAAA;AAC9G,OAAO,EAAE,sCAAsC,EAAE,MAAM,sEAAsE,CAAA;AAC7H,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAA;
|
|
1
|
+
{"version":3,"file":"custom-field-definition.factory.js","sourceRoot":"","sources":["../../lib/factory/custom-field-definition.factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAG9F,OAAO,EAAE,oCAAoC,EAAE,MAAM,kEAAkE,CAAA;AACvH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4DAA4D,CAAA;AAC9G,OAAO,EAAE,qCAAqC,EAAE,MAAM,oEAAoE,CAAA;AAC1H,OAAO,EAAE,wCAAwC,EAAE,MAAM,4EAA4E,CAAA;AACrI,OAAO,EAAE,mCAAmC,EAAE,MAAM,gEAAgE,CAAA;AACpH,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAA;AACxI,OAAO,EAAE,sCAAsC,EAAE,MAAM,wEAAwE,CAAA;AAC/H,OAAO,EAAE,iCAAiC,EAAE,MAAM,4DAA4D,CAAA;AAC9G,OAAO,EAAE,sCAAsC,EAAE,MAAM,sEAAsE,CAAA;AAC7H,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAA;AAwDzF,MAAM,UAAU,qBAAqB,CACnC,IAAO,EACP,UAAuD;IAEvD,OAAO,8BAA8B,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAO,EACP,UAAuD;IAEvD,OAAO;QACL,GAAG,UAAU;QACb,IAAI;KAC4B,CAAA;AACpC,CAAC;AAKD,SAAS,8BAA8B,CACrC,UAAsC;IAEtC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,eAAe,CAAC,IAAI,CAAC;QAC1B,KAAK,eAAe,CAAC,UAAU,CAAC;QAChC,KAAK,eAAe,CAAC,MAAM,CAAC;QAC5B,KAAK,eAAe,CAAC,OAAO,CAAC;QAC7B,KAAK,eAAe,CAAC,IAAI,CAAC;QAC1B,KAAK,eAAe,CAAC,SAAS,CAAC;QAC/B,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,MAAM,qBAAqB,GAAG;gBAC5B,IAAI,EAAE,YAAY,EAA6B;gBAC/C,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK,EAAE,cAAc,CACnB,UAAU,CAAC,IAAI,EACf,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAChD;gBACD,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;aACoD,CAAA;YAEnF,6BAA6B,CAAC,qBAAqB,CAAC,CAAA;YAEpD,OAAO,qBAAqB,CAAA;QAC9B,CAAC;QACD,KAAK,eAAe,CAAC,aAAa,CAAC;QACnC,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;YAClC,MAAM,qBAAqB,GAAG;gBAC5B,IAAI,EAAE,YAAY,EAA6B;gBAC/C,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK,EAAE,cAAc,CACnB,UAAU,CAAC,IAAI,EACf,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAChD;gBACD,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;aACoD,CAAA;YAEnF,6BAA6B,CAAC,qBAAqB,CAAC,CAAA;YAEpD,OAAO,qBAAqB,CAAA;QAC9B,CAAC;QACD;YACE,OAAO,eAAe,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,IAAqB,EACrB,KAA4B;IAE5B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,IAAI;QACJ,GAAG,KAAK;KACW,CAAA;AACvB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAwB;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,0BAA0B,CAAC,wCAAwC,CAAC,CAAA;QAChF,CAAC;QAED,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,0BAA0B,CAAC,uCAAuC,CAAC,CAAA;QAC/E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,0BAA0B,CAAC,iDAAiD,CAAC,CAAA;QACzF,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,UAA+C;IAE/C,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,0BAA0B,CAAC,0CAA0C,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,0BAA0B,CAAC,mCAAmC,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,0BAA0B,CAAC,0DAA0D,CAAC,CAAA;IAClG,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,KAAK,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,0BAA0B,CAAC,gEAAgE,CAAC,CAAA;IACxG,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,IAAI,0BAA0B,CAAC,8CAA8C,CAAC,CAAA;IACtF,CAAC;IAED,wBAAwB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE1C,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,eAAe,CAAC,IAAI;YACvB,iCAAiC,CAAC,UAAU,CAAC,CAAA;YAC7C,OAAM;QACR,KAAK,eAAe,CAAC,UAAU;YAC7B,sCAAsC,CAAC,UAAU,CAAC,CAAA;YAClD,OAAM;QACR,KAAK,eAAe,CAAC,MAAM;YACzB,mCAAmC,CAAC,UAAU,CAAC,CAAA;YAC/C,OAAM;QACR,KAAK,eAAe,CAAC,OAAO;YAC1B,oCAAoC,CAAC,UAAU,CAAC,CAAA;YAChD,OAAM;QACR,KAAK,eAAe,CAAC,IAAI;YACvB,iCAAiC,CAAC,UAAU,CAAC,CAAA;YAC7C,OAAM;QACR,KAAK,eAAe,CAAC,SAAS;YAC5B,sCAAsC,CAAC,UAAU,CAAC,CAAA;YAClD,OAAM;QACR,KAAK,eAAe,CAAC,aAAa;YAChC,yCAAyC,CAAC,UAAU,CAAC,CAAA;YACrD,OAAM;QACR,KAAK,eAAe,CAAC,YAAY;YAC/B,wCAAwC,CAAC,UAAU,CAAC,CAAA;YACpD,OAAM;QACR,KAAK,eAAe,CAAC,QAAQ;YAC3B,qCAAqC,CAAC,UAAU,CAAC,CAAA;YACjD,OAAM;QACR;YACE,eAAe,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import { expect } from 'expect';
|
|
3
|
+
import { LocalizedString } from '@wisemen/localized-string';
|
|
4
|
+
import { CustomFieldDefinitionError } from '#src/errors/custom-field-definition.error.js';
|
|
5
|
+
import { CustomFieldType } from '#src/enum/custom-field-type.enum.js';
|
|
6
|
+
import { customFieldDefinition } from '#src/factory/custom-field-definition.factory.js';
|
|
7
|
+
describe('customFieldDefinition views', () => {
|
|
8
|
+
it('defaults views to an empty array', () => {
|
|
9
|
+
const definition = customFieldDefinition(CustomFieldType.TEXT, {
|
|
10
|
+
tenantUuid: null,
|
|
11
|
+
entityType: 'invoice',
|
|
12
|
+
key: 'notes',
|
|
13
|
+
label: new LocalizedString([{ locale: 'en', value: 'Notes' }]),
|
|
14
|
+
description: null,
|
|
15
|
+
isRequired: false
|
|
16
|
+
});
|
|
17
|
+
expect(definition.views).toEqual([]);
|
|
18
|
+
});
|
|
19
|
+
it('keeps the provided views', () => {
|
|
20
|
+
const definition = customFieldDefinition(CustomFieldType.SINGLE_SELECT, {
|
|
21
|
+
tenantUuid: null,
|
|
22
|
+
entityType: 'invoice',
|
|
23
|
+
key: 'status',
|
|
24
|
+
label: new LocalizedString([{ locale: 'en', value: 'Status' }]),
|
|
25
|
+
description: null,
|
|
26
|
+
isRequired: false,
|
|
27
|
+
choices: [
|
|
28
|
+
{
|
|
29
|
+
value: 'open',
|
|
30
|
+
label: new LocalizedString([{ locale: 'en', value: 'Open' }]),
|
|
31
|
+
order: 1
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
views: [
|
|
35
|
+
{ key: 'invoice-detail', order: 10 },
|
|
36
|
+
{ key: 'invoice-overview', order: 20 }
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
expect(definition.views).toEqual([
|
|
40
|
+
{ key: 'invoice-detail', order: 10 },
|
|
41
|
+
{ key: 'invoice-overview', order: 20 }
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
it('rejects a view whose key is empty', () => {
|
|
45
|
+
expect(() => customFieldDefinition(CustomFieldType.TEXT, {
|
|
46
|
+
tenantUuid: null,
|
|
47
|
+
entityType: 'invoice',
|
|
48
|
+
key: 'notes',
|
|
49
|
+
label: new LocalizedString([{ locale: 'en', value: 'Notes' }]),
|
|
50
|
+
description: null,
|
|
51
|
+
isRequired: false,
|
|
52
|
+
views: [{ key: ' ', order: 10 }]
|
|
53
|
+
})).toThrow(new CustomFieldDefinitionError('Custom field view key can not be empty'));
|
|
54
|
+
});
|
|
55
|
+
it('rejects duplicate view keys', () => {
|
|
56
|
+
expect(() => customFieldDefinition(CustomFieldType.TEXT, {
|
|
57
|
+
tenantUuid: null,
|
|
58
|
+
entityType: 'invoice',
|
|
59
|
+
key: 'notes',
|
|
60
|
+
label: new LocalizedString([{ locale: 'en', value: 'Notes' }]),
|
|
61
|
+
description: null,
|
|
62
|
+
isRequired: false,
|
|
63
|
+
views: [
|
|
64
|
+
{ key: 'invoice-detail', order: 10 },
|
|
65
|
+
{ key: 'invoice-detail', order: 20 }
|
|
66
|
+
]
|
|
67
|
+
})).toThrow(new CustomFieldDefinitionError('Custom field view keys must be unique'));
|
|
68
|
+
});
|
|
69
|
+
it('rejects a view whose order is not a finite number', () => {
|
|
70
|
+
expect(() => customFieldDefinition(CustomFieldType.TEXT, {
|
|
71
|
+
tenantUuid: null,
|
|
72
|
+
entityType: 'invoice',
|
|
73
|
+
key: 'notes',
|
|
74
|
+
label: new LocalizedString([{ locale: 'en', value: 'Notes' }]),
|
|
75
|
+
description: null,
|
|
76
|
+
isRequired: false,
|
|
77
|
+
views: [{ key: 'invoice-detail', order: Number.NaN }]
|
|
78
|
+
})).toThrow(new CustomFieldDefinitionError('Custom field view order must be a finite number'));
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=custom-field-definition.factory.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-field-definition.factory.unit.test.js","sourceRoot":"","sources":["../../lib/factory/custom-field-definition.factory.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { CustomFieldDefinition } from '#src/typeorm/custom-field-definition.enti
|
|
|
3
3
|
export interface CustomFieldDefinitionsOptions {
|
|
4
4
|
tenantUuid?: string;
|
|
5
5
|
entityType?: string | string[];
|
|
6
|
+
view?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare class CustomFieldDefinitionsRepository {
|
|
8
9
|
private readonly repository;
|
|
@@ -170,5 +170,77 @@ describe('ViewCustomFieldDefinitionsRepository integration', () => {
|
|
|
170
170
|
expect(response.map(item => item.key)).toEqual(['alpha', 'zulu']);
|
|
171
171
|
expect(response.every(item => item.tenantUuid === tenantUuid)).toBe(true);
|
|
172
172
|
});
|
|
173
|
+
it('returns only definitions in the requested view ordered by key', async () => {
|
|
174
|
+
const first = customFieldDefinition(CustomFieldType.TEXT, {
|
|
175
|
+
tenantUuid: null,
|
|
176
|
+
entityType: 'ticket',
|
|
177
|
+
key: 'zulu',
|
|
178
|
+
label: new LocalizedString([{ locale: 'en', value: 'Zulu' }]),
|
|
179
|
+
description: null,
|
|
180
|
+
isRequired: false,
|
|
181
|
+
views: [
|
|
182
|
+
{ key: 'ticket-detail', order: 10 },
|
|
183
|
+
{ key: 'ticket-overview', order: 30 }
|
|
184
|
+
]
|
|
185
|
+
});
|
|
186
|
+
const tiedFirst = customFieldDefinition(CustomFieldType.TEXT, {
|
|
187
|
+
tenantUuid: null,
|
|
188
|
+
entityType: 'ticket',
|
|
189
|
+
key: 'bravo',
|
|
190
|
+
label: new LocalizedString([{ locale: 'en', value: 'Bravo' }]),
|
|
191
|
+
description: null,
|
|
192
|
+
isRequired: false,
|
|
193
|
+
views: [{ key: 'ticket-detail', order: 20 }]
|
|
194
|
+
});
|
|
195
|
+
const tiedSecond = customFieldDefinition(CustomFieldType.TEXT, {
|
|
196
|
+
tenantUuid: null,
|
|
197
|
+
entityType: 'ticket',
|
|
198
|
+
key: 'charlie',
|
|
199
|
+
label: new LocalizedString([{ locale: 'en', value: 'Charlie' }]),
|
|
200
|
+
description: null,
|
|
201
|
+
isRequired: false,
|
|
202
|
+
views: [{ key: 'ticket-detail', order: 20 }]
|
|
203
|
+
});
|
|
204
|
+
const otherView = customFieldDefinition(CustomFieldType.TEXT, {
|
|
205
|
+
tenantUuid: null,
|
|
206
|
+
entityType: 'ticket',
|
|
207
|
+
key: 'alpha',
|
|
208
|
+
label: new LocalizedString([{ locale: 'en', value: 'Alpha' }]),
|
|
209
|
+
description: null,
|
|
210
|
+
isRequired: false,
|
|
211
|
+
views: [{ key: 'ticket-overview', order: 10 }]
|
|
212
|
+
});
|
|
213
|
+
const noViews = customFieldDefinition(CustomFieldType.TEXT, {
|
|
214
|
+
tenantUuid: null,
|
|
215
|
+
entityType: 'ticket',
|
|
216
|
+
key: 'hidden',
|
|
217
|
+
label: new LocalizedString([{ locale: 'en', value: 'Hidden' }]),
|
|
218
|
+
description: null,
|
|
219
|
+
isRequired: false
|
|
220
|
+
});
|
|
221
|
+
await dataSource.manager.save(CustomFieldDefinition, [
|
|
222
|
+
first,
|
|
223
|
+
tiedFirst,
|
|
224
|
+
tiedSecond,
|
|
225
|
+
otherView,
|
|
226
|
+
noViews
|
|
227
|
+
]);
|
|
228
|
+
const repository = new CustomFieldDefinitionsRepository(dataSource.manager.getRepository(CustomFieldDefinition));
|
|
229
|
+
const detailResponse = await repository.findDefinitions({
|
|
230
|
+
entityType: 'ticket',
|
|
231
|
+
view: 'ticket-detail'
|
|
232
|
+
});
|
|
233
|
+
expect(detailResponse.map(item => item.key)).toEqual(['bravo', 'charlie', 'zulu']);
|
|
234
|
+
const overviewResponse = await repository.findDefinitions({
|
|
235
|
+
entityType: 'ticket',
|
|
236
|
+
view: 'ticket-overview'
|
|
237
|
+
});
|
|
238
|
+
expect(overviewResponse.map(item => item.key)).toEqual(['alpha', 'zulu']);
|
|
239
|
+
const allResponse = await repository.findDefinitions({
|
|
240
|
+
entityType: 'ticket'
|
|
241
|
+
});
|
|
242
|
+
expect(allResponse.map(item => item.key)).toEqual(['alpha', 'bravo', 'charlie', 'hidden', 'zulu']);
|
|
243
|
+
expect(allResponse.find(item => item.key === 'hidden')?.views).toEqual([]);
|
|
244
|
+
});
|
|
173
245
|
});
|
|
174
246
|
//# sourceMappingURL=custom-field-definitions.repository.integration.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definitions.repository.integration.test.js","sourceRoot":"","sources":["../../lib/repositories/custom-field-definitions.repository.integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custom-field-definitions.repository.integration.test.js","sourceRoot":"","sources":["../../lib/repositories/custom-field-definitions.repository.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
11
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
12
|
};
|
|
13
13
|
import { Injectable } from '@nestjs/common';
|
|
14
|
-
import { Any, IsNull, Repository } from 'typeorm';
|
|
14
|
+
import { Any, IsNull, JsonContains, Repository } from 'typeorm';
|
|
15
15
|
import { CustomFieldDefinition } from '#src/typeorm/custom-field-definition.entity.js';
|
|
16
16
|
import { InjectRepository } from '@wisemen/nestjs-typeorm';
|
|
17
17
|
let CustomFieldDefinitionsRepository = class CustomFieldDefinitionsRepository {
|
|
@@ -25,10 +25,12 @@ let CustomFieldDefinitionsRepository = class CustomFieldDefinitionsRepository {
|
|
|
25
25
|
if (isArray && entityType.length === 0) {
|
|
26
26
|
return [];
|
|
27
27
|
}
|
|
28
|
+
const view = options?.view;
|
|
28
29
|
return this.repository.find({
|
|
29
30
|
where: {
|
|
30
31
|
entityType: isArray ? Any(entityType) : entityType,
|
|
31
|
-
tenantUuid: options?.tenantUuid ?? IsNull()
|
|
32
|
+
tenantUuid: options?.tenantUuid ?? IsNull(),
|
|
33
|
+
views: view === undefined ? undefined : JsonContains([{ key: view }])
|
|
32
34
|
},
|
|
33
35
|
order: {
|
|
34
36
|
key: 'ASC'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definitions.repository.js","sourceRoot":"","sources":["../../lib/repositories/custom-field-definitions.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"custom-field-definitions.repository.js","sourceRoot":"","sources":["../../lib/repositories/custom-field-definitions.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAA;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AASnD,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAGxB;IAFnB,YAEmB,UAA6C;QAA7C,eAAU,GAAV,UAAU,CAAmC;IAC5D,CAAC;IAEL,KAAK,CAAC,eAAe,CACnB,OAAuC;QAEvC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAA;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAA;QAE1B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE;gBACL,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU;gBAClD,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE;gBAC3C,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;aACtE;YACD,KAAK,EAAE;gBACL,GAAG,EAAE,KAAK;aACX;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AA5BY,gCAAgC;IAD5C,UAAU,EAAE;IAGR,WAAA,gBAAgB,CAAC,qBAAqB,CAAC,CAAA;qCACX,UAAU;GAH9B,gCAAgC,CA4B5C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LocalizedStringDto } from '@wisemen/localized-string';
|
|
2
|
-
import type { CustomFieldDefinitionData } from '#src/custom-field-definition.js';
|
|
2
|
+
import type { CustomFieldDefinitionData, CustomFieldView } from '#src/custom-field-definition.js';
|
|
3
3
|
import { CustomFieldType } from '#src/enum/custom-field-type.enum.js';
|
|
4
4
|
import type { CustomFieldDefinitionUuid } from '#src/custom-field-definition.uuid.js';
|
|
5
5
|
import type { CustomFieldRules } from '#src/custom-field-rules.js';
|
|
@@ -10,6 +10,11 @@ declare class CustomFieldChoiceResponse {
|
|
|
10
10
|
order: number;
|
|
11
11
|
constructor(choice: CustomFieldChoice);
|
|
12
12
|
}
|
|
13
|
+
declare class CustomFieldViewResponse {
|
|
14
|
+
key: string;
|
|
15
|
+
order: number;
|
|
16
|
+
constructor(view: CustomFieldView);
|
|
17
|
+
}
|
|
13
18
|
export declare class CustomFieldDefinitionResponse {
|
|
14
19
|
uuid: CustomFieldDefinitionUuid;
|
|
15
20
|
tenantUuid: string | null;
|
|
@@ -21,6 +26,7 @@ export declare class CustomFieldDefinitionResponse {
|
|
|
21
26
|
isRequired: boolean;
|
|
22
27
|
choices: CustomFieldChoiceResponse[] | null;
|
|
23
28
|
rules: CustomFieldRules | null;
|
|
29
|
+
views: CustomFieldViewResponse[];
|
|
24
30
|
constructor(definition: CustomFieldDefinitionData);
|
|
25
31
|
}
|
|
26
32
|
export {};
|
|
@@ -32,6 +32,22 @@ __decorate([
|
|
|
32
32
|
ApiProperty({ type: Number }),
|
|
33
33
|
__metadata("design:type", Number)
|
|
34
34
|
], CustomFieldChoiceResponse.prototype, "order", void 0);
|
|
35
|
+
class CustomFieldViewResponse {
|
|
36
|
+
key;
|
|
37
|
+
order;
|
|
38
|
+
constructor(view) {
|
|
39
|
+
this.key = view.key;
|
|
40
|
+
this.order = view.order;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
__decorate([
|
|
44
|
+
ApiProperty({ type: String }),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], CustomFieldViewResponse.prototype, "key", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
ApiProperty({ type: Number }),
|
|
49
|
+
__metadata("design:type", Number)
|
|
50
|
+
], CustomFieldViewResponse.prototype, "order", void 0);
|
|
35
51
|
export class CustomFieldDefinitionResponse {
|
|
36
52
|
uuid;
|
|
37
53
|
tenantUuid;
|
|
@@ -43,6 +59,7 @@ export class CustomFieldDefinitionResponse {
|
|
|
43
59
|
isRequired;
|
|
44
60
|
choices;
|
|
45
61
|
rules;
|
|
62
|
+
views;
|
|
46
63
|
constructor(definition) {
|
|
47
64
|
this.uuid = definition.uuid;
|
|
48
65
|
this.tenantUuid = definition.tenantUuid;
|
|
@@ -54,6 +71,7 @@ export class CustomFieldDefinitionResponse {
|
|
|
54
71
|
this.isRequired = definition.isRequired;
|
|
55
72
|
this.choices = definition.choices?.map(choice => new CustomFieldChoiceResponse(choice)) ?? null;
|
|
56
73
|
this.rules = definition.rules;
|
|
74
|
+
this.views = definition.views.map(view => new CustomFieldViewResponse(view));
|
|
57
75
|
}
|
|
58
76
|
}
|
|
59
77
|
__decorate([
|
|
@@ -96,4 +114,8 @@ __decorate([
|
|
|
96
114
|
ApiProperty({ type: Object, nullable: true }),
|
|
97
115
|
__metadata("design:type", Object)
|
|
98
116
|
], CustomFieldDefinitionResponse.prototype, "rules", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
ApiProperty({ type: CustomFieldViewResponse, isArray: true }),
|
|
119
|
+
__metadata("design:type", Array)
|
|
120
|
+
], CustomFieldDefinitionResponse.prototype, "views", void 0);
|
|
99
121
|
//# sourceMappingURL=custom-field-definition.response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definition.response.js","sourceRoot":"","sources":["../../lib/responses/custom-field-definition.response.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAKjG,MAAM,yBAAyB;IAE7B,KAAK,CAAQ;IAGb,KAAK,CAAoB;IAGzB,KAAK,CAAQ;IAEb,YAAY,MAAyB;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC3B,CAAC;CACF;AAbC;IADC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDACjB;AAGb;IADC,WAAW,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;8BACnC,kBAAkB;wDAAA;AAGzB;IADC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDACjB;AASf,MAAM,OAAO,6BAA6B;IAExC,IAAI,CAA2B;IAG/B,UAAU,CAAe;IAGzB,UAAU,CAAQ;IAGlB,GAAG,CAAQ;IAGX,KAAK,CAAoB;IAGzB,WAAW,CAA2B;IAGtC,IAAI,CAAiB;IAGrB,UAAU,CAAS;IAGnB,OAAO,CAAoC;IAG3C,KAAK,CAAyB;
|
|
1
|
+
{"version":3,"file":"custom-field-definition.response.js","sourceRoot":"","sources":["../../lib/responses/custom-field-definition.response.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,11 @@ describe('CustomFieldDefinitionResponse', () => {
|
|
|
33
33
|
rules: {
|
|
34
34
|
minSelections: 1,
|
|
35
35
|
maxSelections: 2
|
|
36
|
-
}
|
|
36
|
+
},
|
|
37
|
+
views: [
|
|
38
|
+
{ key: 'ticket-detail', order: 10 },
|
|
39
|
+
{ key: 'ticket-overview', order: 20 }
|
|
40
|
+
]
|
|
37
41
|
});
|
|
38
42
|
const response = new CustomFieldDefinitionResponse(definition);
|
|
39
43
|
expect(response).toMatchObject({
|
|
@@ -74,7 +78,11 @@ describe('CustomFieldDefinitionResponse', () => {
|
|
|
74
78
|
type: CustomFieldType.MULTI_SELECT,
|
|
75
79
|
minSelections: 1,
|
|
76
80
|
maxSelections: 2
|
|
77
|
-
}
|
|
81
|
+
},
|
|
82
|
+
views: [
|
|
83
|
+
{ key: 'ticket-detail', order: 10 },
|
|
84
|
+
{ key: 'ticket-overview', order: 20 }
|
|
85
|
+
]
|
|
78
86
|
});
|
|
79
87
|
});
|
|
80
88
|
it('maps nullable fields to null', () => {
|
|
@@ -91,6 +99,7 @@ describe('CustomFieldDefinitionResponse', () => {
|
|
|
91
99
|
expect(response.tenantUuid).toBeNull();
|
|
92
100
|
expect(response.choices).toBeNull();
|
|
93
101
|
expect(response.rules).toBeNull();
|
|
102
|
+
expect(response.views).toEqual([]);
|
|
94
103
|
});
|
|
95
104
|
});
|
|
96
105
|
//# sourceMappingURL=custom-field-definition.response.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definition.response.unit.test.js","sourceRoot":"","sources":["../../lib/responses/custom-field-definition.response.unit.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"custom-field-definition.response.unit.test.js","sourceRoot":"","sources":["../../lib/responses/custom-field-definition.response.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LocalizedString } from '@wisemen/localized-string';
|
|
2
2
|
import type { CustomFieldChoice } from '../custom-field-choice.js';
|
|
3
|
-
import type { CustomFieldDefinitionData } from '../custom-field-definition.js';
|
|
3
|
+
import type { CustomFieldDefinitionData, CustomFieldView } from '../custom-field-definition.js';
|
|
4
4
|
import type { CustomFieldDefinitionUuid } from '../custom-field-definition.uuid.js';
|
|
5
5
|
import type { CustomFieldRules } from '../custom-field-rules.js';
|
|
6
6
|
import { CustomFieldType } from '../enum/custom-field-type.enum.js';
|
|
@@ -17,4 +17,5 @@ export declare class CustomFieldDefinition implements CustomFieldDefinitionData
|
|
|
17
17
|
isRequired: boolean;
|
|
18
18
|
choices: CustomFieldChoice[] | null;
|
|
19
19
|
rules: CustomFieldRules | null;
|
|
20
|
+
views: CustomFieldView[];
|
|
20
21
|
}
|
|
@@ -24,6 +24,7 @@ let CustomFieldDefinition = class CustomFieldDefinition {
|
|
|
24
24
|
isRequired;
|
|
25
25
|
choices;
|
|
26
26
|
rules;
|
|
27
|
+
views;
|
|
27
28
|
};
|
|
28
29
|
__decorate([
|
|
29
30
|
PrimaryGeneratedColumn('uuid'),
|
|
@@ -73,6 +74,10 @@ __decorate([
|
|
|
73
74
|
Column({ type: 'jsonb', nullable: true }),
|
|
74
75
|
__metadata("design:type", Object)
|
|
75
76
|
], CustomFieldDefinition.prototype, "rules", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
Column({ type: 'jsonb', default: () => '\'[]\'::jsonb' }),
|
|
79
|
+
__metadata("design:type", Array)
|
|
80
|
+
], CustomFieldDefinition.prototype, "views", void 0);
|
|
76
81
|
CustomFieldDefinition = __decorate([
|
|
77
82
|
Entity(),
|
|
78
83
|
Index(['entityType', 'key'], { unique: true, where: '"tenant_uuid" IS NULL' }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-field-definition.entity.js","sourceRoot":"","sources":["../../lib/typeorm/custom-field-definition.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK3G,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAKlE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEhC,IAAI,CAA2B;IAG/B,SAAS,CAAM;IAGf,SAAS,CAAM;IAGf,UAAU,CAAe;IAGzB,UAAU,CAAQ;IAGlB,GAAG,CAAQ;IAGX,KAAK,CAAiB;IAGtB,WAAW,CAAwB;IAGnC,IAAI,CAAiB;IAGrB,UAAU,CAAS;IAGnB,OAAO,CAA4B;IAGnC,KAAK,CAAyB;
|
|
1
|
+
{"version":3,"file":"custom-field-definition.entity.js","sourceRoot":"","sources":["../../lib/typeorm/custom-field-definition.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK3G,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAKlE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEhC,IAAI,CAA2B;IAG/B,SAAS,CAAM;IAGf,SAAS,CAAM;IAGf,UAAU,CAAe;IAGzB,UAAU,CAAQ;IAGlB,GAAG,CAAQ;IAGX,KAAK,CAAiB;IAGtB,WAAW,CAAwB;IAGnC,IAAI,CAAiB;IAGrB,UAAU,CAAS;IAGnB,OAAO,CAA4B;IAGnC,KAAK,CAAyB;IAG9B,KAAK,CAAmB;CACzB,CAAA;AArCC;IADC,sBAAsB,CAAC,MAAM,CAAC;;mDACA;AAG/B;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;8BAC7C,IAAI;wDAAA;AAGf;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;8BAC7C,IAAI;wDAAA;AAGf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACrC;AAGzB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yDACV;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kDACjB;AAGX;IADC,qBAAqB,EAAE;8BACjB,eAAe;oDAAA;AAGtB;IADC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DACP;AAGnC;IADC,qBAAqB,EAAE;;mDACH;AAGrB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yDACT;AAGnB;IADC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACT;AAGnC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACZ;AAG9B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;;oDAClC;AAtCb,qBAAqB;IAHjC,MAAM,EAAE;IACR,KAAK,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IAC9E,KAAK,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;GACpF,qBAAqB,CAuCjC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wisemen/nestjs-custom-fields",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@wisemen/api-error": "^1.1.1",
|
|
22
|
-
"@wisemen/datewise": "^1.
|
|
22
|
+
"@wisemen/datewise": "^1.5.0",
|
|
23
23
|
"@wisemen/localized-string": "^0.1.4",
|
|
24
|
-
"@wisemen/
|
|
24
|
+
"@wisemen/monetary": "^2.0.0",
|
|
25
25
|
"@wisemen/nestjs-typeorm": "^1.4.1",
|
|
26
|
-
"@wisemen/
|
|
26
|
+
"@wisemen/validators": "^0.0.29"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@nestjs/common": "^11.1.28 || ^12.0.0",
|
|
@@ -100,6 +100,38 @@ export class Playground extends JobContainer {
|
|
|
100
100
|
}
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
+
### Views
|
|
104
|
+
|
|
105
|
+
Use `views` to control where a definition is shown. A definition is shown in a
|
|
106
|
+
view only when that view's `key` is in its `views` array; any view not listed
|
|
107
|
+
does not show it. `order` is the field's position within that view, so the same
|
|
108
|
+
field can be first in a detail page and last in a table. The package does not
|
|
109
|
+
sort by `order`; sort by it where you render the view.
|
|
110
|
+
|
|
111
|
+
View keys are app-defined strings, like `entityType`: the package stores them
|
|
112
|
+
as-is. Keep them in an enum shared with your frontend. `views` defaults to `[]`,
|
|
113
|
+
so a definition without views is hidden everywhere. View keys must be non-empty
|
|
114
|
+
and unique per definition, and `order` must be a finite number.
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
const referenceField = customFieldDefinition(CustomFieldType.TEXT, {
|
|
118
|
+
tenantUuid: null,
|
|
119
|
+
entityType: CustomFieldEntityType.TICKET,
|
|
120
|
+
key: 'reference',
|
|
121
|
+
label: new LocalizedString([{ locale: 'en', value: 'Reference' }]),
|
|
122
|
+
description: null,
|
|
123
|
+
isRequired: false,
|
|
124
|
+
views: [
|
|
125
|
+
{ key: 'ticket-detail', order: 10 },
|
|
126
|
+
{ key: 'ticket-overview', order: 20 }
|
|
127
|
+
]
|
|
128
|
+
})
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
When upgrading from 1.x to 2.0.0, generate a migration for the new `views`
|
|
132
|
+
column and backfill `views` for your existing definitions in the same release.
|
|
133
|
+
Without a backfill, every existing definition is hidden in every view.
|
|
134
|
+
|
|
103
135
|
## Step 3: Store Values On The Entity With The Custom Column
|
|
104
136
|
|
|
105
137
|
Resolved custom field values live on your own entity. Use
|
|
@@ -280,6 +312,16 @@ Use a multi-entity lookup when a use case validates or returns definitions for
|
|
|
280
312
|
several entity types together. The tenant filter still applies to every
|
|
281
313
|
requested entity type, and results remain ordered by definition `key`.
|
|
282
314
|
|
|
315
|
+
Pass `view` to retrieve only the definitions shown in that view. Results are
|
|
316
|
+
ordered by `key`, with or without `view`.
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
const definitions = await repository.findDefinitions({
|
|
320
|
+
entityType: CustomFieldEntityType.TICKET,
|
|
321
|
+
view: 'ticket-overview'
|
|
322
|
+
})
|
|
323
|
+
```
|
|
324
|
+
|
|
283
325
|
After DTO parsing, validate the resolved values against the definitions that
|
|
284
326
|
apply for that entity and tenant. This is the runtime check that enforces the
|
|
285
327
|
definition rules.
|