@rentman/rm-core 1.0.0 → 1.0.2
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/dist/definitions/classes/ApiFormatter.d.ts +36 -0
- package/dist/definitions/classes/BatchStatus.d.ts +16 -0
- package/dist/definitions/classes/ChangesCompiler.d.ts +34 -0
- package/dist/definitions/classes/ChangesProcessor.d.ts +46 -0
- package/dist/definitions/classes/CollectionCache.d.ts +39 -0
- package/dist/definitions/classes/CollectionEntryService.d.ts +15 -0
- package/dist/definitions/classes/CollectionHandler.d.ts +79 -0
- package/dist/definitions/classes/CollectionResourceService.d.ts +5 -0
- package/dist/definitions/classes/ColumnCache.d.ts +18 -0
- package/dist/definitions/classes/ColumnExpansion.d.ts +16 -0
- package/dist/definitions/classes/ColumnHandler.d.ts +19 -0
- package/dist/definitions/classes/ColumnSet.d.ts +54 -0
- package/dist/definitions/classes/ColumnUtil.d.ts +80 -0
- package/dist/definitions/classes/CreateRequest.d.ts +28 -0
- package/dist/definitions/classes/ItemAdministrator.d.ts +114 -0
- package/dist/definitions/classes/ItemCache.d.ts +22 -0
- package/dist/definitions/classes/ItemEntryService.d.ts +50 -0
- package/dist/definitions/classes/ItemHandler.d.ts +70 -0
- package/dist/definitions/classes/ItemRequestService.d.ts +31 -0
- package/dist/definitions/classes/ItemResourceService.d.ts +8 -0
- package/dist/definitions/classes/KeyService.d.ts +28 -0
- package/dist/definitions/classes/LockService.d.ts +25 -0
- package/dist/definitions/classes/ModuleChangesCompiler.d.ts +18 -0
- package/dist/definitions/classes/PromiseService.d.ts +10 -0
- package/dist/definitions/classes/QueryMatcher.d.ts +14 -0
- package/dist/definitions/classes/QueryParser.d.ts +16 -0
- package/dist/definitions/classes/QueryService.d.ts +19 -0
- package/dist/definitions/classes/RequestColumnExpansion.d.ts +9 -0
- package/dist/definitions/classes/ResourceCache.d.ts +78 -0
- package/dist/definitions/classes/Util.d.ts +25 -0
- package/dist/definitions/constants.d.ts +10 -0
- package/dist/definitions/factories/BatchStatusFactory.d.ts +8 -0
- package/dist/definitions/factories/ChangesCompilerFactory.d.ts +9 -0
- package/dist/definitions/factories/ChangesProcessorFactory.d.ts +31 -0
- package/{src/factories/CollectionCacheFactory.ts → dist/definitions/factories/CollectionCacheFactory.d.ts} +3 -11
- package/dist/definitions/factories/CollectionEntryFactory.d.ts +19 -0
- package/dist/definitions/factories/CollectionResourceFactory.d.ts +18 -0
- package/dist/definitions/factories/ColumnExpansionFactory.d.ts +11 -0
- package/dist/definitions/factories/ColumnSetFactory.d.ts +9 -0
- package/dist/definitions/factories/CreateRequestFactory.d.ts +13 -0
- package/dist/definitions/factories/ItemCacheFactory.d.ts +9 -0
- package/dist/definitions/factories/ItemEntryFactory.d.ts +6 -0
- package/dist/definitions/factories/ItemResourceFactory.d.ts +12 -0
- package/{src/factories/ModuleChangesCompilerFactory.ts → dist/definitions/factories/ModuleChangesCompilerFactory.d.ts} +3 -14
- package/dist/definitions/factories/QueryMatcherFactory.d.ts +7 -0
- package/dist/definitions/factories/QueryParserFactory.d.ts +5 -0
- package/{src/factories/RequestColumnExpansionFactory.ts → dist/definitions/factories/RequestColumnExpansionFactory.d.ts} +3 -11
- package/dist/definitions/factories/ResourceCacheFactory.d.ts +33 -0
- package/dist/definitions/index.d.ts +121 -0
- package/dist/definitions/interfaces/ApiRequestServiceInterface.d.ts +10 -0
- package/dist/definitions/interfaces/AuthInterface.d.ts +4 -0
- package/{src/interfaces/ErrorHandlerInterface.ts → dist/definitions/interfaces/ErrorHandlerInterface.d.ts} +2 -2
- package/dist/definitions/interfaces/ResourceCacheInterface.d.ts +6 -0
- package/dist/definitions/models/CollectionEditResource.d.ts +23 -0
- package/dist/definitions/models/CollectionEntry.d.ts +61 -0
- package/dist/definitions/models/CollectionResource.d.ts +29 -0
- package/{src/models/CollectionViewResource.ts → dist/definitions/models/CollectionViewResource.d.ts} +6 -13
- package/dist/definitions/models/EditResource.d.ts +7 -0
- package/dist/definitions/models/ItemEntry.d.ts +18 -0
- package/dist/definitions/models/ItemResource.d.ts +14 -0
- package/dist/definitions/models/ViewResource.d.ts +7 -0
- package/dist/rm-core.js +29 -0
- package/dist/rm-core.js.map +1 -0
- package/package.json +5 -1
- package/.editorconfig +0 -23
- package/src/classes/ApiFormatter.ts +0 -338
- package/src/classes/BatchStatus.ts +0 -86
- package/src/classes/ChangesCompiler.ts +0 -161
- package/src/classes/ChangesProcessor.ts +0 -475
- package/src/classes/CollectionCache.ts +0 -234
- package/src/classes/CollectionEntryService.ts +0 -83
- package/src/classes/CollectionHandler.ts +0 -619
- package/src/classes/CollectionResourceService.ts +0 -38
- package/src/classes/ColumnCache.ts +0 -114
- package/src/classes/ColumnExpansion.ts +0 -74
- package/src/classes/ColumnHandler.ts +0 -90
- package/src/classes/ColumnSet.ts +0 -181
- package/src/classes/ColumnUtil.ts +0 -589
- package/src/classes/CreateRequest.ts +0 -158
- package/src/classes/ItemAdministrator.ts +0 -571
- package/src/classes/ItemCache.ts +0 -158
- package/src/classes/ItemEntryService.ts +0 -488
- package/src/classes/ItemHandler.ts +0 -592
- package/src/classes/ItemRequestService.ts +0 -229
- package/src/classes/ItemResourceService.ts +0 -36
- package/src/classes/KeyService.ts +0 -76
- package/src/classes/LockService.ts +0 -184
- package/src/classes/ModuleChangesCompiler.ts +0 -123
- package/src/classes/PromiseService.ts +0 -19
- package/src/classes/QueryMatcher.ts +0 -135
- package/src/classes/QueryParser.ts +0 -209
- package/src/classes/QueryService.ts +0 -35
- package/src/classes/RequestColumnExpansion.ts +0 -31
- package/src/classes/ResourceCache.ts +0 -289
- package/src/classes/Util.ts +0 -422
- package/src/constants.ts +0 -11
- package/src/factories/BatchStatusFactory.ts +0 -18
- package/src/factories/ChangesCompilerFactory.ts +0 -20
- package/src/factories/ChangesProcessorFactory.ts +0 -53
- package/src/factories/CollectionEntryFactory.ts +0 -35
- package/src/factories/CollectionResourceFactory.ts +0 -36
- package/src/factories/ColumnExpansionFactory.ts +0 -25
- package/src/factories/ColumnSetFactory.ts +0 -24
- package/src/factories/CreateRequestFactory.ts +0 -28
- package/src/factories/ItemCacheFactory.ts +0 -18
- package/src/factories/ItemEntryFactory.ts +0 -18
- package/src/factories/ItemResourceFactory.ts +0 -28
- package/src/factories/QueryMatcherFactory.ts +0 -20
- package/src/factories/QueryParserFactory.ts +0 -10
- package/src/factories/ResourceCacheFactory.ts +0 -55
- package/src/index.ts +0 -188
- package/src/interfaces/ApiRequestServiceInterface.ts +0 -17
- package/src/interfaces/AuthInterface.ts +0 -5
- package/src/interfaces/ResourceCacheInterface.ts +0 -9
- package/src/models/CollectionEditResource.ts +0 -139
- package/src/models/CollectionEntry.ts +0 -448
- package/src/models/CollectionResource.ts +0 -223
- package/src/models/EditResource.ts +0 -15
- package/src/models/ItemEntry.ts +0 -24
- package/src/models/ItemResource.ts +0 -35
- package/src/models/ViewResource.ts +0 -14
- package/tsconfig.json +0 -12
- package/tslint.json +0 -63
- package/webpack.common.js +0 -35
- package/webpack.dev.js +0 -10
- package/webpack.prod.js +0 -17
package/src/classes/ItemCache.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import QueryMatcherFactory from "../factories/QueryMatcherFactory";
|
|
2
|
-
import ItemEntry from "../models/ItemEntry";
|
|
3
|
-
import ItemEntryService from "./ItemEntryService";
|
|
4
|
-
|
|
5
|
-
export default class ItemCache {
|
|
6
|
-
entries = {};
|
|
7
|
-
|
|
8
|
-
constructor (
|
|
9
|
-
private queryMatcherFactory: QueryMatcherFactory,
|
|
10
|
-
private itemEntryService: ItemEntryService
|
|
11
|
-
) {
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
some (callback) {
|
|
15
|
-
for (const itemType in this.entries) {
|
|
16
|
-
for (const itemId in this.entries[itemType]) {
|
|
17
|
-
if (callback(this.entries[itemType][itemId]))
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getByItemType (itemType) {
|
|
26
|
-
const result = [];
|
|
27
|
-
|
|
28
|
-
if (this.entries[itemType] === undefined)
|
|
29
|
-
return result;
|
|
30
|
-
|
|
31
|
-
for (const itemId in this.entries[itemType])
|
|
32
|
-
result.push(this.entries[itemType][itemId]);
|
|
33
|
-
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
getByQuery (itemType, query) {
|
|
38
|
-
const result = [];
|
|
39
|
-
|
|
40
|
-
if (this.entries[itemType] === undefined)
|
|
41
|
-
return result;
|
|
42
|
-
|
|
43
|
-
for (const itemId in this.entries[itemType]) {
|
|
44
|
-
const itemEntry = this.entries[itemType][itemId];
|
|
45
|
-
|
|
46
|
-
if (this.matchQuery(itemEntry, query))
|
|
47
|
-
result.push(itemEntry);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return result;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getLocalByQuery (itemType, query) {
|
|
54
|
-
const result = [];
|
|
55
|
-
|
|
56
|
-
if (this.entries[itemType] === undefined)
|
|
57
|
-
return result;
|
|
58
|
-
|
|
59
|
-
for (const itemId in this.entries[itemType]) {
|
|
60
|
-
const itemEntry = this.entries[itemType][itemId];
|
|
61
|
-
|
|
62
|
-
if (!this.itemEntryService.isLocal(itemEntry))
|
|
63
|
-
continue;
|
|
64
|
-
|
|
65
|
-
if (this.matchQuery(itemEntry, query))
|
|
66
|
-
result.push(itemEntry);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
forEach (callback) {
|
|
73
|
-
for (const itemType in this.entries) {
|
|
74
|
-
for (const itemId in this.entries[itemType])
|
|
75
|
-
callback(this.entries[itemType][itemId]);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
toArray () {
|
|
80
|
-
const result = [];
|
|
81
|
-
|
|
82
|
-
for (const itemType in this.entries) {
|
|
83
|
-
for (const itemId in this.entries[itemType])
|
|
84
|
-
result.push(this.entries[itemType][itemId]);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
add (itemEntry: ItemEntry) {
|
|
91
|
-
const itemType = itemEntry.itemType;
|
|
92
|
-
|
|
93
|
-
if (this.entries[itemType] === undefined)
|
|
94
|
-
this.entries[itemType] = {};
|
|
95
|
-
|
|
96
|
-
return this.entries[itemType][itemEntry.itemId] = itemEntry;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
get (itemType, itemId) {
|
|
100
|
-
return this.entries[itemType] === undefined ? undefined : this.entries[itemType][itemId];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
getByParent (parentType, parentId, itemType) {
|
|
104
|
-
const result = [];
|
|
105
|
-
|
|
106
|
-
if (this.entries[itemType] === undefined)
|
|
107
|
-
return result;
|
|
108
|
-
|
|
109
|
-
for (const itemId in this.entries[itemType]) {
|
|
110
|
-
const itemEntry = this.entries[itemType][itemId];
|
|
111
|
-
const parent = itemEntry.parent;
|
|
112
|
-
|
|
113
|
-
if (parent === undefined)
|
|
114
|
-
continue;
|
|
115
|
-
|
|
116
|
-
if (parentType === parent.itemType && parentId == parent.itemId)
|
|
117
|
-
result.push(itemEntry);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return result;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// should be fast
|
|
124
|
-
contains (itemType, itemId) {
|
|
125
|
-
return this.entries[itemType] !== undefined &&
|
|
126
|
-
this.entries[itemType][itemId] !== undefined;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
updateItemId (itemEntry: ItemEntry, oldItemId) {
|
|
130
|
-
const entryMap = this.entries[itemEntry.itemType];
|
|
131
|
-
|
|
132
|
-
delete entryMap[oldItemId];
|
|
133
|
-
return entryMap[itemEntry.itemId] = itemEntry;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
clear (itemEntry: ItemEntry) {
|
|
137
|
-
if (itemEntry === undefined) {
|
|
138
|
-
this.entries = {};
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (this.entries[itemEntry.itemType] === undefined)
|
|
143
|
-
return false;
|
|
144
|
-
|
|
145
|
-
return delete this.entries[itemEntry.itemType][itemEntry.itemId];
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
matchQuery (itemEntry: ItemEntry, query) {
|
|
149
|
-
const parent: any = itemEntry.parent !== undefined ? itemEntry.parent : {};
|
|
150
|
-
const queryMatcher = this.queryMatcherFactory.construct(
|
|
151
|
-
parent.itemType,
|
|
152
|
-
parent.itemId,
|
|
153
|
-
this.itemEntryService.getFields(itemEntry)
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
return queryMatcher.matchQuery(query.object) === true; // TODO: maybe?
|
|
157
|
-
}
|
|
158
|
-
}
|
|
@@ -1,488 +0,0 @@
|
|
|
1
|
-
import * as moment from 'moment';
|
|
2
|
-
import ApiFormatter from './ApiFormatter';
|
|
3
|
-
import KeyService from './KeyService';
|
|
4
|
-
import PromiseService from "./PromiseService";
|
|
5
|
-
import { shallowMerge } from './Util';
|
|
6
|
-
|
|
7
|
-
export default class ItemEntryService {
|
|
8
|
-
// todo: translate
|
|
9
|
-
undefinedItemError = 'Het opgevraagde item bestaat niet / Je hebt niet voldoende rechten om dit item te bekijken';
|
|
10
|
-
ALL_PERMISSIONS = 7;
|
|
11
|
-
|
|
12
|
-
constructor (
|
|
13
|
-
private apiFormatter: ApiFormatter,
|
|
14
|
-
private keyService: KeyService,
|
|
15
|
-
private promiseService: PromiseService
|
|
16
|
-
) {
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
resetDerived (itemEntry, columnIds) {
|
|
21
|
-
const rootColumns = itemEntry.columns.root;
|
|
22
|
-
const filteredColumns = [];
|
|
23
|
-
|
|
24
|
-
for (const column of rootColumns) {
|
|
25
|
-
if (columnIds.indexOf(column.id) !== -1)
|
|
26
|
-
filteredColumns.push(column);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
resetDerivedRecursively(filteredColumns);
|
|
30
|
-
|
|
31
|
-
function resetDerivedRecursively (columns) {
|
|
32
|
-
for (const column of columns) {
|
|
33
|
-
if (!column.isLeaf)
|
|
34
|
-
resetDerivedRecursively(column.children);
|
|
35
|
-
|
|
36
|
-
delete itemEntry.derived[column.path];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
defer (itemEntry, deferRequest) {
|
|
42
|
-
itemEntry.deferred = this.promiseService.defer();
|
|
43
|
-
itemEntry.deferRequest = deferRequest;
|
|
44
|
-
|
|
45
|
-
return itemEntry;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
resolve (itemEntry) {
|
|
49
|
-
const deferred = itemEntry.deferred;
|
|
50
|
-
|
|
51
|
-
// the resolve function might defer the item again, so delete the properties first
|
|
52
|
-
delete itemEntry.deferred;
|
|
53
|
-
delete itemEntry.deferRequest;
|
|
54
|
-
|
|
55
|
-
deferred.resolve(itemEntry);
|
|
56
|
-
return itemEntry;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
reject (itemEntry, error = this.undefinedItemError) {
|
|
60
|
-
itemEntry.deferred.reject(error);
|
|
61
|
-
|
|
62
|
-
delete itemEntry.deferred;
|
|
63
|
-
delete itemEntry.deferRequest;
|
|
64
|
-
|
|
65
|
-
return itemEntry;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
clearResources (itemEntry) {
|
|
69
|
-
itemEntry.resources = [];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
deactivateResources (itemEntry) {
|
|
73
|
-
const resources = itemEntry.resources; // on of the deactivate callbacks might call clearResources
|
|
74
|
-
|
|
75
|
-
for (const resource of resources)
|
|
76
|
-
resource.deactivate();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
getFields (itemEntry) {
|
|
80
|
-
if (itemEntry.modified !== undefined)
|
|
81
|
-
return itemEntry.modified;
|
|
82
|
-
|
|
83
|
-
return itemEntry.initial;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// should be fast
|
|
87
|
-
expand (entry, main, derived, expandResource) {
|
|
88
|
-
const difference = expandResource.difference;
|
|
89
|
-
entry.columns = expandResource.merged;
|
|
90
|
-
|
|
91
|
-
this.apiFormatter.expandResponse(
|
|
92
|
-
entry.initial,
|
|
93
|
-
main,
|
|
94
|
-
difference.main
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
this.apiFormatter.expandResponse(
|
|
98
|
-
entry.derived,
|
|
99
|
-
derived,
|
|
100
|
-
difference.derived
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
if (entry.modified === undefined)
|
|
104
|
-
return entry;
|
|
105
|
-
|
|
106
|
-
this.apiFormatter.expandResponse(
|
|
107
|
-
entry.modified,
|
|
108
|
-
main,
|
|
109
|
-
difference.main
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
return entry;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
processOptions (options) {
|
|
116
|
-
return shallowMerge(
|
|
117
|
-
options,
|
|
118
|
-
{
|
|
119
|
-
columns: true,
|
|
120
|
-
parent: null,
|
|
121
|
-
templateOptions: {},
|
|
122
|
-
templateColumns: {},
|
|
123
|
-
deferRequest: false
|
|
124
|
-
}
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
getConversionValue (itemType, itemId, map) {
|
|
129
|
-
if (map[itemType] === undefined)
|
|
130
|
-
return undefined;
|
|
131
|
-
|
|
132
|
-
return map[itemType][itemId];
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// key: initial / modified
|
|
136
|
-
// fields *haven't* been formatted yet
|
|
137
|
-
updateFields (entry, source, overwrite = true) {
|
|
138
|
-
const mainColumns = entry.columns.main;
|
|
139
|
-
const formattedColumns = entry.columns.formatted.main;
|
|
140
|
-
const initial = entry.initial;
|
|
141
|
-
const modified = entry.modified;
|
|
142
|
-
|
|
143
|
-
if (modified !== undefined) {
|
|
144
|
-
for (const column of mainColumns) {
|
|
145
|
-
const columnId = column.id;
|
|
146
|
-
|
|
147
|
-
if (overwrite || this.apiFormatter.compareFields(column.apiColumn.type, initial[columnId], modified[columnId]))
|
|
148
|
-
modified[columnId] = source[columnId];
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
this.apiFormatter.formatResponse(modified, formattedColumns);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
for (const column of mainColumns) {
|
|
155
|
-
const columnId = column.id;
|
|
156
|
-
|
|
157
|
-
initial[columnId] = source[columnId];
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
this.apiFormatter.formatResponse(initial, formattedColumns);
|
|
161
|
-
|
|
162
|
-
return entry;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
updateItemValue (entry, fields, apiColumn, conversionMap) {
|
|
166
|
-
const columnId = apiColumn.id;
|
|
167
|
-
const currentValue = fields[columnId];
|
|
168
|
-
|
|
169
|
-
let newValue;
|
|
170
|
-
|
|
171
|
-
if (apiColumn.type === 'link' && currentValue === undefined) {
|
|
172
|
-
if (entry.parent !== undefined)
|
|
173
|
-
newValue = entry.parent.itemId;
|
|
174
|
-
} else
|
|
175
|
-
newValue = this.getConversionValue(apiColumn.itemType, currentValue, conversionMap);
|
|
176
|
-
|
|
177
|
-
if (newValue !== undefined)
|
|
178
|
-
fields[columnId] = newValue;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
updateItemFields (entry, conversionMap) {
|
|
182
|
-
const itemColumns = entry.columns.item;
|
|
183
|
-
const initial = entry.initial;
|
|
184
|
-
const modified = entry.modified;
|
|
185
|
-
|
|
186
|
-
for (const column of itemColumns) {
|
|
187
|
-
const apiColumn = column.apiColumn;
|
|
188
|
-
|
|
189
|
-
this.updateItemValue(entry, initial, apiColumn, conversionMap);
|
|
190
|
-
|
|
191
|
-
if (modified === undefined)
|
|
192
|
-
continue;
|
|
193
|
-
|
|
194
|
-
this.updateItemValue(entry, modified, apiColumn, conversionMap);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
process (entry) {
|
|
199
|
-
const formattedColumns = entry.columns.formatted;
|
|
200
|
-
|
|
201
|
-
this.apiFormatter.formatResponse(entry.initial, formattedColumns.main);
|
|
202
|
-
this.apiFormatter.formatResponse(entry.derived, formattedColumns.derived);
|
|
203
|
-
|
|
204
|
-
return entry;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
formatRequest (entry) {
|
|
208
|
-
if (entry.modified === undefined)
|
|
209
|
-
return {};
|
|
210
|
-
|
|
211
|
-
return this.apiFormatter.formatRequest(
|
|
212
|
-
this.keyService.isLocalId(entry.itemId) ? {} : entry.initial,
|
|
213
|
-
entry.modified,
|
|
214
|
-
entry.columns.main
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
setDisplayName (entry) {
|
|
219
|
-
if (entry.modified === undefined)
|
|
220
|
-
return;
|
|
221
|
-
|
|
222
|
-
const result = this.getDisplayName(entry);
|
|
223
|
-
|
|
224
|
-
if (result)
|
|
225
|
-
entry.modified.displayname = result;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
getDisplayName (entry) {
|
|
229
|
-
const fields = typeof entry.modified === 'undefined' ?
|
|
230
|
-
entry.initial : entry.modified;
|
|
231
|
-
|
|
232
|
-
switch (entry.itemType) {
|
|
233
|
-
case 'Contact':
|
|
234
|
-
return fields.type === 'bedrijf' ?
|
|
235
|
-
fields.bedrijf : this.getFullName(
|
|
236
|
-
fields.voornaam,
|
|
237
|
-
fields.tussenvoegsel,
|
|
238
|
-
fields.naam
|
|
239
|
-
);
|
|
240
|
-
case 'Medewerker':
|
|
241
|
-
case 'Person':
|
|
242
|
-
return this.getFullName(
|
|
243
|
-
fields.voornaam,
|
|
244
|
-
fields.tussenvoegsel,
|
|
245
|
-
fields.achternaam
|
|
246
|
-
);
|
|
247
|
-
case 'Reparatie':
|
|
248
|
-
return entry.derived['materiaal>naam']; // TODO!
|
|
249
|
-
default:
|
|
250
|
-
return fields[this.getTitleField(entry.itemType)];
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
getFullName (firstName, infix, lastName) {
|
|
255
|
-
return firstName.trim()
|
|
256
|
-
.concat(' ', infix).trim() // infix can be an empty string
|
|
257
|
-
.concat(' ', lastName);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
getTitleField (itemType) {
|
|
261
|
-
switch (itemType) {
|
|
262
|
-
case 'Exemplaar':
|
|
263
|
-
return 'serienummer';
|
|
264
|
-
case 'Factuur':
|
|
265
|
-
return 'nummer';
|
|
266
|
-
case 'Files':
|
|
267
|
-
return 'friendlyname';
|
|
268
|
-
case 'Functie':
|
|
269
|
-
case 'Standaardfunctie':
|
|
270
|
-
return 'naamintern';
|
|
271
|
-
case 'Voorraadmutatie':
|
|
272
|
-
return 'omschrijving';
|
|
273
|
-
case 'Barcode':
|
|
274
|
-
return 'code';
|
|
275
|
-
case 'Betaalmiddel':
|
|
276
|
-
case 'Betalingsconditie':
|
|
277
|
-
case 'Briefpapier':
|
|
278
|
-
case 'TaxClass':
|
|
279
|
-
case 'TaxSchema':
|
|
280
|
-
case 'Condition':
|
|
281
|
-
case 'Factuurmoment':
|
|
282
|
-
case 'Functiegroep':
|
|
283
|
-
case 'Grootboek':
|
|
284
|
-
case 'Inhuur':
|
|
285
|
-
case 'Inhuurgroep':
|
|
286
|
-
case 'Inhuurmateriaal':
|
|
287
|
-
case 'Materiaal':
|
|
288
|
-
case 'MateriaalCat':
|
|
289
|
-
case 'Medewerkertarief':
|
|
290
|
-
case 'Notitie':
|
|
291
|
-
case 'Planningmateriaal':
|
|
292
|
-
case 'Project':
|
|
293
|
-
case 'Staffelgroep':
|
|
294
|
-
case 'Subproject':
|
|
295
|
-
case 'Taak':
|
|
296
|
-
case 'Tag':
|
|
297
|
-
case 'Template':
|
|
298
|
-
case 'Tijd':
|
|
299
|
-
case 'Titel':
|
|
300
|
-
case 'Type':
|
|
301
|
-
case 'Voertuig':
|
|
302
|
-
return 'naam';
|
|
303
|
-
// case 'Contact':
|
|
304
|
-
// case 'Medewerker':
|
|
305
|
-
// case 'Person':
|
|
306
|
-
default:
|
|
307
|
-
// only use displayname for items that dont't have a simple, writable name field
|
|
308
|
-
// this function is also used for templated items
|
|
309
|
-
return 'displayname';
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
*
|
|
315
|
-
* @param {Object} entry
|
|
316
|
-
* @param {Boolean} returnAll Returns all initial values if true
|
|
317
|
-
* @returns {Object}
|
|
318
|
-
*/
|
|
319
|
-
getChanges (entry, returnAll) {
|
|
320
|
-
if (entry.modified === undefined && !returnAll)
|
|
321
|
-
return [];
|
|
322
|
-
|
|
323
|
-
return this.apiFormatter.getChanges(
|
|
324
|
-
entry.initial,
|
|
325
|
-
returnAll ? {} : entry.modified,
|
|
326
|
-
entry.columns.main
|
|
327
|
-
);
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
isLocal (entry) {
|
|
331
|
-
return this.keyService.isLocalId(entry.itemId);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
isLockable (entry) {
|
|
335
|
-
if (this.isLocal(entry))
|
|
336
|
-
return false;
|
|
337
|
-
|
|
338
|
-
switch (entry.itemType) {
|
|
339
|
-
case 'Project':
|
|
340
|
-
case 'Materiaal':
|
|
341
|
-
case 'Contact':
|
|
342
|
-
case 'Medewerker':
|
|
343
|
-
case 'Voertuig':
|
|
344
|
-
case 'Template':
|
|
345
|
-
return true;
|
|
346
|
-
default:
|
|
347
|
-
return false;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
hasChanges (entry) {
|
|
352
|
-
if (entry.modified === undefined)
|
|
353
|
-
return false;
|
|
354
|
-
|
|
355
|
-
return this.apiFormatter.hasChanges(
|
|
356
|
-
entry.initial,
|
|
357
|
-
entry.modified,
|
|
358
|
-
entry.columns.main
|
|
359
|
-
);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
resetModified (entry) {
|
|
363
|
-
const columns = entry.columns.main;
|
|
364
|
-
|
|
365
|
-
if (entry.modified === undefined)
|
|
366
|
-
return;
|
|
367
|
-
|
|
368
|
-
for (const column of columns) {
|
|
369
|
-
entry.modified[column.id] = this.apiFormatter.clone(
|
|
370
|
-
column.apiColumn.type,
|
|
371
|
-
entry.initial[column.id]
|
|
372
|
-
);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
setInitial (entry, values, enableCallbacks) {
|
|
377
|
-
let previous;
|
|
378
|
-
|
|
379
|
-
for (const columnId in values)
|
|
380
|
-
entry.initial[columnId] = values[columnId];
|
|
381
|
-
|
|
382
|
-
if (entry.modified === undefined) {
|
|
383
|
-
if (enableCallbacks)
|
|
384
|
-
this.callOnChange(entry, this.apiFormatter.copyFields(entry.initial, {}, entry.columns.main));
|
|
385
|
-
|
|
386
|
-
return entry;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
previous = this.apiFormatter.copyFields(entry.modified, {}, entry.columns.main);
|
|
390
|
-
|
|
391
|
-
for (const columnId in values)
|
|
392
|
-
entry.modified[columnId] = values[columnId];
|
|
393
|
-
|
|
394
|
-
if (enableCallbacks)
|
|
395
|
-
this.callOnChange(entry, previous);
|
|
396
|
-
|
|
397
|
-
return entry;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Does a shallow copy of values!
|
|
402
|
-
*/
|
|
403
|
-
setModified (entry, values?) {
|
|
404
|
-
const columns = entry.columns;
|
|
405
|
-
const responseColumns = columns.response[entry.itemType];
|
|
406
|
-
|
|
407
|
-
if (entry.modified === undefined) {
|
|
408
|
-
const resources = entry.resources;
|
|
409
|
-
const initial = entry.initial;
|
|
410
|
-
const modified = entry.modified = {};
|
|
411
|
-
|
|
412
|
-
if (values === undefined)
|
|
413
|
-
this.apiFormatter.copyFields(initial, modified, columns.main);
|
|
414
|
-
else {
|
|
415
|
-
this.apiFormatter.shallowCopyFields(values, initial, modified, columns.main);
|
|
416
|
-
|
|
417
|
-
for (const columnId in values) {
|
|
418
|
-
if (responseColumns[columnId] === undefined) {
|
|
419
|
-
// todo: dev mode constant
|
|
420
|
-
// if (DEV_MODE)
|
|
421
|
-
// console.warn('setModified: no column found for', columnId);
|
|
422
|
-
|
|
423
|
-
modified[columnId] = values[columnId];
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
for (const resource of resources)
|
|
429
|
-
resource.fields = modified;
|
|
430
|
-
|
|
431
|
-
return entry;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
if (values === undefined)
|
|
435
|
-
return entry;
|
|
436
|
-
|
|
437
|
-
for (const columnId in values) {
|
|
438
|
-
// todo: dev mode constant
|
|
439
|
-
// if (DEV_MODE) {
|
|
440
|
-
// if (responseColumns[columnId] === undefined)
|
|
441
|
-
// console.warn('setModified: no column found for', columnId);
|
|
442
|
-
// }
|
|
443
|
-
|
|
444
|
-
entry.modified[columnId] = values[columnId];
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
return entry;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
setDerived (entry, values) {
|
|
451
|
-
for (const key in values)
|
|
452
|
-
entry.derived[key] = values[key];
|
|
453
|
-
|
|
454
|
-
return entry;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
processLocal (entry, initial, modified, derived, conversionMap) {
|
|
458
|
-
entry.initial = {permissions: this.ALL_PERMISSIONS};
|
|
459
|
-
|
|
460
|
-
this.updateFields(entry, initial);
|
|
461
|
-
this.updateItemFields(entry, conversionMap);
|
|
462
|
-
|
|
463
|
-
this.setModified(entry, modified);
|
|
464
|
-
|
|
465
|
-
entry.modified.created = moment();
|
|
466
|
-
entry.derived = derived;
|
|
467
|
-
|
|
468
|
-
return entry;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
setParent (entry, parentType, parentId) {
|
|
472
|
-
entry.parent = {
|
|
473
|
-
itemType: parentType,
|
|
474
|
-
itemId: parentId
|
|
475
|
-
};
|
|
476
|
-
|
|
477
|
-
return entry;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
callOnChange (entry, previous) {
|
|
481
|
-
for (let i = 0, l = entry.resources.length; i < l; i++) {
|
|
482
|
-
const itemResource = entry.resources[i];
|
|
483
|
-
|
|
484
|
-
if (itemResource !== null)
|
|
485
|
-
itemResource.options.onChange(itemResource, previous);
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
}
|