@rentman/rm-core 1.0.0 → 1.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/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
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { noop } from "../index";
|
|
2
|
-
import ItemResource from "../models/ItemResource";
|
|
3
|
-
import { shallowMerge } from "./Util";
|
|
4
|
-
|
|
5
|
-
export default class CollectionResourceService {
|
|
6
|
-
processOptions (options) {
|
|
7
|
-
return shallowMerge(
|
|
8
|
-
options,
|
|
9
|
-
{
|
|
10
|
-
editItems: false,
|
|
11
|
-
editCollection: false,
|
|
12
|
-
modInstant: false,
|
|
13
|
-
enableSave: true,
|
|
14
|
-
onItemsCreated: noop,
|
|
15
|
-
onChange: noop, // needed for comparison
|
|
16
|
-
onAdd: noop,
|
|
17
|
-
onRemove: noop,
|
|
18
|
-
onAddInitial: noop,
|
|
19
|
-
onRemoveInitial: noop,
|
|
20
|
-
onDeactiveateItem: noop, // will be overwritten in ResourceCache
|
|
21
|
-
onDeactivateCollection: noop, // will be overwritten in ResourceCache
|
|
22
|
-
resourceKey: null, // TODO: remove
|
|
23
|
-
clearOnTabChange: true,
|
|
24
|
-
clearOnSubTabChange: true,
|
|
25
|
-
custom: null
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
getIdArray (itemResources: ItemResource[]) {
|
|
31
|
-
const result = [];
|
|
32
|
-
|
|
33
|
-
for (const itemResource of itemResources)
|
|
34
|
-
result.push(itemResource.entry.itemId);
|
|
35
|
-
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import ColumnUtil from './ColumnUtil';
|
|
2
|
-
|
|
3
|
-
export default class ColumnCache {
|
|
4
|
-
cache = {};
|
|
5
|
-
allColumns = {};
|
|
6
|
-
|
|
7
|
-
constructor (
|
|
8
|
-
private columnUtil: ColumnUtil
|
|
9
|
-
) {
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
setColumn (itemType, responseColumn) {
|
|
13
|
-
if (this.cache[itemType] === undefined)
|
|
14
|
-
this.cache[itemType] = {};
|
|
15
|
-
|
|
16
|
-
const entry = this.cache[itemType];
|
|
17
|
-
const columnId = responseColumn.id;
|
|
18
|
-
|
|
19
|
-
if (entry[columnId] === undefined)
|
|
20
|
-
entry[columnId] = responseColumn;
|
|
21
|
-
|
|
22
|
-
return entry[columnId];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
setColumns (itemType, requestColumns, responseColumns) {
|
|
26
|
-
const result = {};
|
|
27
|
-
|
|
28
|
-
for (const responseType in responseColumns) {
|
|
29
|
-
const columns = responseColumns[responseType];
|
|
30
|
-
|
|
31
|
-
result[responseType] = {};
|
|
32
|
-
|
|
33
|
-
for (const columnId in columns)
|
|
34
|
-
result[responseType][columnId] = this.setColumn(responseType, columns[columnId]);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (requestColumns === true)
|
|
38
|
-
this.allColumns[itemType] = true;
|
|
39
|
-
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
retrieve (itemType, requestColumns): { missing: any[] | true, cached: object } {
|
|
44
|
-
if (requestColumns === true) {
|
|
45
|
-
if (this.containsAll(itemType))
|
|
46
|
-
return {cached: this.getColumns(itemType), missing: []};
|
|
47
|
-
|
|
48
|
-
return {cached: {}, missing: true};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const reponseAccumulator = {};
|
|
52
|
-
const requestAccumulator = [];
|
|
53
|
-
|
|
54
|
-
this.retrieveColumns(itemType, requestColumns, requestAccumulator, reponseAccumulator);
|
|
55
|
-
|
|
56
|
-
return {missing: requestAccumulator, cached: reponseAccumulator};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
containsAll (itemType) {
|
|
60
|
-
return this.allColumns[itemType] === true;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
getColumns (itemType) {
|
|
64
|
-
const columns = this.cache[itemType] === undefined ? [] : this.cache[itemType];
|
|
65
|
-
const result = {};
|
|
66
|
-
|
|
67
|
-
result[itemType] = columns;
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
private retrieveColumns (itemType, requestColumns, requestAccumulator, responseAccumulator) {
|
|
72
|
-
// always retrieve the id column
|
|
73
|
-
this.retrieveColumn(itemType, 'id', requestAccumulator, responseAccumulator);
|
|
74
|
-
|
|
75
|
-
for (const requestColumn of requestColumns)
|
|
76
|
-
this.retrieveColumn(itemType, requestColumn, requestAccumulator, responseAccumulator);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
private retrieveColumn (itemType, requestColumn, requestAccumulator, responseAccumulator) {
|
|
80
|
-
const column = this.columnUtil.parseRequestColumn(requestColumn);
|
|
81
|
-
const responseColumn = this.getColumn(itemType, column.id);
|
|
82
|
-
|
|
83
|
-
if (responseColumn === undefined) {
|
|
84
|
-
requestAccumulator.push(requestColumn);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (responseAccumulator[itemType] === undefined)
|
|
89
|
-
responseAccumulator[itemType] = {};
|
|
90
|
-
|
|
91
|
-
responseAccumulator[itemType][column.id] = responseColumn;
|
|
92
|
-
|
|
93
|
-
if (column.children.length === 0)
|
|
94
|
-
return;
|
|
95
|
-
|
|
96
|
-
const missingDerived = [];
|
|
97
|
-
|
|
98
|
-
this.retrieveColumns(responseColumn.itemType, column.children, missingDerived, responseAccumulator);
|
|
99
|
-
|
|
100
|
-
if (missingDerived.length === 0)
|
|
101
|
-
return;
|
|
102
|
-
|
|
103
|
-
const missingRequest = {};
|
|
104
|
-
missingRequest[column.id] = missingDerived;
|
|
105
|
-
requestAccumulator.push(missingRequest);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
private getColumn (itemType, columnId) {
|
|
109
|
-
if (this.cache[itemType] === undefined)
|
|
110
|
-
return;
|
|
111
|
-
|
|
112
|
-
return this.cache[itemType][columnId];
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import ColumnSetFactory from "../factories/ColumnSetFactory";
|
|
2
|
-
import ColumnHandler from "./ColumnHandler";
|
|
3
|
-
import ColumnUtil from "./ColumnUtil";
|
|
4
|
-
|
|
5
|
-
export default class ColumnExpansion {
|
|
6
|
-
expansionMap: any = {};
|
|
7
|
-
requestColumnsTrue: boolean;
|
|
8
|
-
|
|
9
|
-
constructor (
|
|
10
|
-
private columnHandler: ColumnHandler,
|
|
11
|
-
private columnSetFactory: ColumnSetFactory,
|
|
12
|
-
private columnUtil: ColumnUtil,
|
|
13
|
-
public itemType: string,
|
|
14
|
-
public requestColumns: any | boolean,
|
|
15
|
-
public responseColumns: any
|
|
16
|
-
) {
|
|
17
|
-
if (requestColumns === true) {
|
|
18
|
-
// requestColumns should always be an array, when it is true derived column information will be lost
|
|
19
|
-
this.requestColumnsTrue = true;
|
|
20
|
-
this.requestColumns = [];
|
|
21
|
-
|
|
22
|
-
for (const columnId in responseColumns[itemType])
|
|
23
|
-
this.requestColumns.push(columnId);
|
|
24
|
-
} else
|
|
25
|
-
this.requestColumnsTrue = false;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
run (columnInfo: any, returnExpansionResult: boolean) {
|
|
29
|
-
const columnInfoId = columnInfo.id;
|
|
30
|
-
|
|
31
|
-
if (this.expansionMap[columnInfoId] !== undefined)
|
|
32
|
-
return returnExpansionResult ? this.expansionMap[columnInfoId] :
|
|
33
|
-
this.expansionMap[columnInfoId].merged;
|
|
34
|
-
|
|
35
|
-
const isColumnSubset = this.columnUtil.isColumnSubset(
|
|
36
|
-
this.requestColumns,
|
|
37
|
-
columnInfo.request,
|
|
38
|
-
columnInfo.true
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
if (isColumnSubset)
|
|
42
|
-
return returnExpansionResult ? null : columnInfo;
|
|
43
|
-
|
|
44
|
-
this.expansionMap[columnInfoId] = this.expandColumnInfo(columnInfo);
|
|
45
|
-
|
|
46
|
-
return returnExpansionResult ? this.expansionMap[columnInfoId] :
|
|
47
|
-
this.expansionMap[columnInfoId].merged;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
private expandColumnInfo (columnInfo: any) {
|
|
51
|
-
const requestMergeResult = this.columnUtil.mergeRequestColumns(columnInfo.request, this.requestColumns);
|
|
52
|
-
const mergedResponseColumns = this.columnUtil
|
|
53
|
-
.mergeResponseColumns(columnInfo.response, this.responseColumns)
|
|
54
|
-
.merged;
|
|
55
|
-
|
|
56
|
-
const merged = this.columnSetFactory.construct(
|
|
57
|
-
this.itemType,
|
|
58
|
-
requestMergeResult.merged,
|
|
59
|
-
mergedResponseColumns
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
const difference = this.columnSetFactory.construct(
|
|
63
|
-
this.itemType,
|
|
64
|
-
requestMergeResult.difference,
|
|
65
|
-
mergedResponseColumns, // we need to be able to look up the parent of derived columns
|
|
66
|
-
false,
|
|
67
|
-
false
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
merged.true = this.requestColumnsTrue || columnInfo.true;
|
|
71
|
-
|
|
72
|
-
return {merged: merged, difference: difference};
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import ApiRequestServiceInterface from '../interfaces/ApiRequestServiceInterface';
|
|
2
|
-
import ErrorHandlerInterface from '../interfaces/ErrorHandlerInterface';
|
|
3
|
-
import ColumnCache from './ColumnCache';
|
|
4
|
-
import ColumnUtil from './ColumnUtil';
|
|
5
|
-
import PromiseService from "./PromiseService";
|
|
6
|
-
|
|
7
|
-
export default class ColumnHandler {
|
|
8
|
-
constructor (
|
|
9
|
-
private apiRequestService: ApiRequestServiceInterface,
|
|
10
|
-
private errorHandler: ErrorHandlerInterface,
|
|
11
|
-
private promiseService: PromiseService,
|
|
12
|
-
private cache: ColumnCache,
|
|
13
|
-
private columnUtil: ColumnUtil
|
|
14
|
-
) {
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
setColumn (itemType, responseColumn) {
|
|
18
|
-
this.cache.setColumn(itemType, responseColumn);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
setColumns (itemType, requestColumns, responseColumns) {
|
|
22
|
-
this.cache.setColumns(itemType, requestColumns, responseColumns);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
fetchItemTypeTranslations (itemTypes): Promise<any> {
|
|
26
|
-
const promises = [];
|
|
27
|
-
const itemTypeMap = {};
|
|
28
|
-
|
|
29
|
-
for (const itemType of itemTypes) {
|
|
30
|
-
const length = promises.push(this.fetch(itemType, ['id']));
|
|
31
|
-
|
|
32
|
-
itemTypeMap[itemType] = length - 1;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return this.promiseService.all(promises)
|
|
36
|
-
.then(
|
|
37
|
-
response => {
|
|
38
|
-
const result = {};
|
|
39
|
-
|
|
40
|
-
for (let i = 0; i < response.length; i++) {
|
|
41
|
-
const itemType = itemTypeMap[i];
|
|
42
|
-
|
|
43
|
-
result[itemType] = response[itemType][itemType].id.name;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return result;
|
|
47
|
-
},
|
|
48
|
-
this.errorHandler.reject
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
request (itemType, columns, params = {}): Promise<any> {
|
|
53
|
-
const requestColumns = {
|
|
54
|
-
[itemType]: columns
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
return this.apiRequestService.columns(itemType, requestColumns, params).then(
|
|
58
|
-
columnResource => {
|
|
59
|
-
return this.cache.setColumns(
|
|
60
|
-
itemType,
|
|
61
|
-
columns,
|
|
62
|
-
columnResource.fetchColumnsObject()
|
|
63
|
-
);
|
|
64
|
-
},
|
|
65
|
-
this.errorHandler.reject
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
fetch (itemType, requestColumns, params = {}): Promise<any> {
|
|
70
|
-
const columnResource = this.cache.retrieve(itemType, requestColumns);
|
|
71
|
-
|
|
72
|
-
if (columnResource.missing !== true && columnResource.missing.length === 0)
|
|
73
|
-
return this.promiseService.when(columnResource.cached);
|
|
74
|
-
|
|
75
|
-
return this.request(itemType, columnResource.missing, params).then(responseColumns => {
|
|
76
|
-
return this.columnUtil.mergeResponseColumns(
|
|
77
|
-
responseColumns,
|
|
78
|
-
columnResource.cached
|
|
79
|
-
).merged;
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
fetchAll (itemType): Promise<any> {
|
|
85
|
-
if (this.cache.containsAll(itemType))
|
|
86
|
-
return this.promiseService.when(this.cache.getColumns(itemType));
|
|
87
|
-
|
|
88
|
-
return this.request(itemType, true);
|
|
89
|
-
}
|
|
90
|
-
}
|
package/src/classes/ColumnSet.ts
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { COLUMN_SEPERATOR } from '../constants';
|
|
2
|
-
import ColumnHandler from './ColumnHandler';
|
|
3
|
-
import ColumnUtil from './ColumnUtil';
|
|
4
|
-
|
|
5
|
-
let currentId = 0;
|
|
6
|
-
|
|
7
|
-
export default class ColumnSet {
|
|
8
|
-
id = ++currentId;
|
|
9
|
-
true: boolean;
|
|
10
|
-
link = null;
|
|
11
|
-
main = [];
|
|
12
|
-
derived = [];
|
|
13
|
-
root = [];
|
|
14
|
-
leaf = [];
|
|
15
|
-
formatted = {
|
|
16
|
-
main: [],
|
|
17
|
-
derived: []
|
|
18
|
-
};
|
|
19
|
-
filtered = [];
|
|
20
|
-
custom = [];
|
|
21
|
-
searchable = [];
|
|
22
|
-
item = [];
|
|
23
|
-
notItem = [];
|
|
24
|
-
|
|
25
|
-
request = [];
|
|
26
|
-
response = {};
|
|
27
|
-
|
|
28
|
-
constructor (
|
|
29
|
-
private columnHandler: ColumnHandler,
|
|
30
|
-
private columnUtil: ColumnUtil,
|
|
31
|
-
public itemType,
|
|
32
|
-
public requestColumns,
|
|
33
|
-
public responseColumns,
|
|
34
|
-
public enableCaching = true,
|
|
35
|
-
public includeIdColumn = true
|
|
36
|
-
) {
|
|
37
|
-
this.true = requestColumns === true;
|
|
38
|
-
|
|
39
|
-
if (requestColumns === true)
|
|
40
|
-
this.processResponseColumns();
|
|
41
|
-
else
|
|
42
|
-
this.processRequestColumns();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
processResponseColumns () {
|
|
46
|
-
this.request = [];
|
|
47
|
-
this.response = this.enableCaching ?
|
|
48
|
-
this.columnHandler.setColumns(this.itemType, true, this.responseColumns) :
|
|
49
|
-
this.responseColumns;
|
|
50
|
-
|
|
51
|
-
for (const columnId in this.responseColumns[this.itemType]) {
|
|
52
|
-
this.main.push(
|
|
53
|
-
this.getColumnInfo(
|
|
54
|
-
this.responseColumns[this.itemType][columnId],
|
|
55
|
-
[],
|
|
56
|
-
null
|
|
57
|
-
)
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
this.request.push(columnId);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
processRequestColumns () {
|
|
65
|
-
this.request = this.requestColumns;
|
|
66
|
-
this.response = {};
|
|
67
|
-
|
|
68
|
-
if (this.requestColumns.length === 0)
|
|
69
|
-
return;
|
|
70
|
-
|
|
71
|
-
for (const requestColumn of this.requestColumns) {
|
|
72
|
-
const columnInfo = this.getRequestColumnInfo(requestColumn, this.itemType, null);
|
|
73
|
-
|
|
74
|
-
if (columnInfo === null)
|
|
75
|
-
continue;
|
|
76
|
-
|
|
77
|
-
this.main.push(columnInfo);
|
|
78
|
-
|
|
79
|
-
if (!columnInfo.isLeaf)
|
|
80
|
-
this.root.push(columnInfo);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (this.includeIdColumn && this.response[this.itemType].id === undefined)
|
|
84
|
-
this.main.push(this.getRequestColumnInfo('id', this.itemType, null));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
getRequestColumnInfo (requestColumn, columnType, parent) {
|
|
88
|
-
const parsedColumn = this.columnUtil.parseRequestColumn(requestColumn);
|
|
89
|
-
const columnId = parsedColumn.id;
|
|
90
|
-
|
|
91
|
-
let responseColumn;
|
|
92
|
-
|
|
93
|
-
if (this.responseColumns[columnType] !== undefined)
|
|
94
|
-
responseColumn = this.responseColumns[columnType][columnId];
|
|
95
|
-
|
|
96
|
-
if (responseColumn === undefined) {
|
|
97
|
-
console.warn('No api column for request column', columnId, 'for itemType', columnType);
|
|
98
|
-
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (this.enableCaching)
|
|
103
|
-
responseColumn = this.columnHandler.setColumn(columnType, responseColumn);
|
|
104
|
-
|
|
105
|
-
const resultResponse = this.response;
|
|
106
|
-
|
|
107
|
-
if (resultResponse[columnType] === undefined)
|
|
108
|
-
resultResponse[columnType] = {};
|
|
109
|
-
|
|
110
|
-
if (resultResponse[columnType][columnId] === undefined)
|
|
111
|
-
resultResponse[columnType][columnId] = responseColumn;
|
|
112
|
-
|
|
113
|
-
return this.getColumnInfo(responseColumn, parsedColumn.children, parent);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
getColumnInfo (responseColumn, children, parent) {
|
|
117
|
-
const isDerived = parent !== null;
|
|
118
|
-
const columnId = responseColumn.id;
|
|
119
|
-
|
|
120
|
-
const columnInfo = {
|
|
121
|
-
id: columnId,
|
|
122
|
-
path: isDerived ?
|
|
123
|
-
parent.path.concat(COLUMN_SEPERATOR, columnId) : columnId,
|
|
124
|
-
apiColumn: responseColumn,
|
|
125
|
-
level: isDerived ? parent.level + 1 : 0,
|
|
126
|
-
isLeaf: children.length === 0,
|
|
127
|
-
itemType: '',
|
|
128
|
-
children: [],
|
|
129
|
-
parent: null,
|
|
130
|
-
tailPath: null
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
if (isDerived) {
|
|
134
|
-
this.derived.push(columnInfo);
|
|
135
|
-
|
|
136
|
-
columnInfo.parent = parent;
|
|
137
|
-
columnInfo.tailPath = parent.level > 0 ?
|
|
138
|
-
parent.tailPath.concat(COLUMN_SEPERATOR, columnId) : columnId;
|
|
139
|
-
} else // we could possibly add derived columns to 'notItem'
|
|
140
|
-
this[this.columnUtil.isItemColumn(responseColumn) ? 'item' : 'notItem'].push(columnInfo);
|
|
141
|
-
|
|
142
|
-
if (this.columnUtil.isFormattedColumn(responseColumn))
|
|
143
|
-
this.formatted[isDerived ? 'derived' : 'main'].push(columnInfo);
|
|
144
|
-
|
|
145
|
-
if (this.columnUtil.isFilteredColumn(responseColumn))
|
|
146
|
-
this.filtered.push(columnInfo);
|
|
147
|
-
|
|
148
|
-
if (this.columnUtil.isSearchableColumn(responseColumn))
|
|
149
|
-
this.searchable.push(columnInfo);
|
|
150
|
-
|
|
151
|
-
if (this.columnUtil.isCustomColumn(responseColumn))
|
|
152
|
-
this.custom.push(columnInfo);
|
|
153
|
-
|
|
154
|
-
if (responseColumn.type === 'link')
|
|
155
|
-
this.link = responseColumn;
|
|
156
|
-
|
|
157
|
-
if (children.length === 0) {
|
|
158
|
-
this.leaf.push(columnInfo);
|
|
159
|
-
|
|
160
|
-
return columnInfo;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (typeof responseColumn.itemType === 'undefined')
|
|
164
|
-
console.warn('itemType undefined in column', responseColumn);
|
|
165
|
-
|
|
166
|
-
columnInfo.itemType = responseColumn.itemType;
|
|
167
|
-
columnInfo.children = [];
|
|
168
|
-
|
|
169
|
-
// columns is *not* true
|
|
170
|
-
for (const child of children) {
|
|
171
|
-
const childInfo = this.getRequestColumnInfo(child, columnInfo.itemType, columnInfo);
|
|
172
|
-
|
|
173
|
-
if (childInfo === null)
|
|
174
|
-
continue;
|
|
175
|
-
|
|
176
|
-
columnInfo.children.push(childInfo);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return columnInfo;
|
|
180
|
-
}
|
|
181
|
-
}
|