@forestadmin/datasource-customizer 1.40.2 → 1.40.3
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.
|
@@ -2,9 +2,17 @@ import { Caller, CollectionDecorator, CollectionSchema, DataSourceDecorator, Pag
|
|
|
2
2
|
export default class SortEmulate extends CollectionDecorator {
|
|
3
3
|
readonly dataSource: DataSourceDecorator<SortEmulate>;
|
|
4
4
|
private readonly sorts;
|
|
5
|
+
private readonly disabledSorts;
|
|
5
6
|
emulateFieldSorting(name: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Disable sorting on this field. This only prevents the end-user to sort on this field.
|
|
9
|
+
* It will still be possible to sort on this field in the customizations code.
|
|
10
|
+
* @param name name of the field
|
|
11
|
+
* @deprecated this method will be removed soon.
|
|
12
|
+
*/
|
|
6
13
|
disableFieldSorting(name: string): void;
|
|
7
14
|
replaceFieldSorting(name: string, equivalentSort: PlainSortClause[]): void;
|
|
15
|
+
private replaceOrEmulateFieldSorting;
|
|
8
16
|
list(caller: Caller, filter: PaginatedFilter, projection: Projection): Promise<RecordData[]>;
|
|
9
17
|
protected refineSchema(childSchema: CollectionSchema): CollectionSchema;
|
|
10
18
|
private sortRecords;
|
|
@@ -5,20 +5,29 @@ class SortEmulate extends datasource_toolkit_1.CollectionDecorator {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
7
7
|
this.sorts = new Map();
|
|
8
|
+
this.disabledSorts = new Set();
|
|
8
9
|
}
|
|
9
10
|
emulateFieldSorting(name) {
|
|
10
|
-
this.
|
|
11
|
+
this.replaceOrEmulateFieldSorting(name, null);
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Disable sorting on this field. This only prevents the end-user to sort on this field.
|
|
15
|
+
* It will still be possible to sort on this field in the customizations code.
|
|
16
|
+
* @param name name of the field
|
|
17
|
+
* @deprecated this method will be removed soon.
|
|
18
|
+
*/
|
|
12
19
|
disableFieldSorting(name) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.
|
|
20
|
+
datasource_toolkit_1.FieldValidator.validate(this, name);
|
|
21
|
+
this.disabledSorts.add(name);
|
|
22
|
+
this.markSchemaAsDirty();
|
|
16
23
|
}
|
|
17
24
|
replaceFieldSorting(name, equivalentSort) {
|
|
25
|
+
if (!equivalentSort)
|
|
26
|
+
throw new Error('A new sort method should be provided to replace field sorting');
|
|
27
|
+
this.replaceOrEmulateFieldSorting(name, equivalentSort);
|
|
28
|
+
}
|
|
29
|
+
replaceOrEmulateFieldSorting(name, equivalentSort) {
|
|
18
30
|
datasource_toolkit_1.FieldValidator.validate(this, name);
|
|
19
|
-
const field = this.childCollection.schema.fields[name];
|
|
20
|
-
if (!field)
|
|
21
|
-
throw new Error('Cannot replace sort on relation');
|
|
22
31
|
this.sorts.set(name, equivalentSort ? new datasource_toolkit_1.Sort(...equivalentSort) : null);
|
|
23
32
|
this.markSchemaAsDirty();
|
|
24
33
|
}
|
|
@@ -48,15 +57,21 @@ class SortEmulate extends datasource_toolkit_1.CollectionDecorator {
|
|
|
48
57
|
refineSchema(childSchema) {
|
|
49
58
|
const fields = {};
|
|
50
59
|
for (const [name, schema] of Object.entries(childSchema.fields)) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
if (schema.type === 'Column') {
|
|
61
|
+
let sortable = schema.isSortable;
|
|
62
|
+
if (this.disabledSorts.has(name)) {
|
|
63
|
+
// disableFieldSorting
|
|
64
|
+
sortable = false;
|
|
65
|
+
}
|
|
66
|
+
else if (this.sorts.has(name)) {
|
|
67
|
+
// replaceFieldSorting
|
|
68
|
+
sortable = true;
|
|
69
|
+
}
|
|
70
|
+
fields[name] = { ...schema, isSortable: sortable };
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
fields[name] = schema;
|
|
74
|
+
}
|
|
60
75
|
}
|
|
61
76
|
return { ...childSchema, fields };
|
|
62
77
|
}
|
|
@@ -102,4 +117,4 @@ class SortEmulate extends datasource_toolkit_1.CollectionDecorator {
|
|
|
102
117
|
}
|
|
103
118
|
}
|
|
104
119
|
exports.default = SortEmulate;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL3NvcnQtZW11bGF0ZS9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0VBZ0J5QztBQUV6QyxNQUFxQixXQUFZLFNBQVEsd0NBQW1CO0lBQTVEOztRQUVtQixVQUFLLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDckMsa0JBQWEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQThJMUQsQ0FBQztJQTVJQyxtQkFBbUIsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUMsSUFBWTtRQUM5QixtQ0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVksRUFBRSxjQUFpQztRQUNqRSxJQUFJLENBQUMsY0FBYztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sNEJBQTRCLENBQUMsSUFBWSxFQUFFLGNBQWlDO1FBQ2xGLG1DQUFjLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLHlCQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFD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
|