@beinformed/ui 1.25.2 → 1.25.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/esm/constants/Constants.js +5 -0
- package/esm/constants/Constants.js.map +1 -1
- package/esm/hooks/useAuthentication.js +5 -5
- package/esm/hooks/useAuthentication.js.map +1 -1
- package/esm/hooks/useModularUI.js.map +1 -1
- package/esm/hooks/useModularUIBasic.js +3 -0
- package/esm/hooks/useModularUIBasic.js.map +1 -1
- package/esm/hooks/useModularUIModel.js +7 -0
- package/esm/hooks/useModularUIModel.js.map +1 -1
- package/esm/hooks/useModularUIRequest.js +5 -7
- package/esm/hooks/useModularUIRequest.js.map +1 -1
- package/esm/models/application/ApplicationModel.js +9 -1
- package/esm/models/application/ApplicationModel.js.map +1 -1
- package/esm/models/base/ResourceModel.js +7 -0
- package/esm/models/base/ResourceModel.js.map +1 -1
- package/esm/models/caseview/CaseViewModel.js +6 -0
- package/esm/models/caseview/CaseViewModel.js.map +1 -1
- package/esm/models/concepts/BusinessScenarioModel.js +6 -0
- package/esm/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/esm/models/concepts/ConceptDetailModel.js +6 -0
- package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
- package/esm/models/concepts/ConceptIndexModel.js +6 -0
- package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
- package/esm/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/esm/models/concepts/ConceptTypeDetailModel.js.map +1 -1
- package/esm/models/content/ContentIndexModel.js +6 -0
- package/esm/models/content/ContentIndexModel.js.map +1 -1
- package/esm/models/content/ContentModel.js +6 -0
- package/esm/models/content/ContentModel.js.map +1 -1
- package/esm/models/content/ContentTOCModel.js +6 -0
- package/esm/models/content/ContentTOCModel.js.map +1 -1
- package/esm/models/content/ContentTypeModel.js +6 -0
- package/esm/models/content/ContentTypeModel.js.map +1 -1
- package/esm/models/detail/DetailModel.js +6 -0
- package/esm/models/detail/DetailModel.js.map +1 -1
- package/esm/models/form/FormModel.js +6 -0
- package/esm/models/form/FormModel.js.map +1 -1
- package/esm/models/list/ListDetailModel.js +6 -0
- package/esm/models/list/ListDetailModel.js.map +1 -1
- package/esm/models/list/ListModel.js +6 -0
- package/esm/models/list/ListModel.js.map +1 -1
- package/esm/models/lookup/LookupOptionsModel.js +6 -0
- package/esm/models/lookup/LookupOptionsModel.js.map +1 -1
- package/esm/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/esm/models/modelcatalog/ModelCatalogModel.js.map +1 -1
- package/esm/models/panels/GroupingPanelModel.js +6 -0
- package/esm/models/panels/GroupingPanelModel.js.map +1 -1
- package/esm/models/resolveModel.js +4 -4
- package/esm/models/resolveModel.js.map +1 -1
- package/esm/models/search/CaseSearchModel.js +6 -0
- package/esm/models/search/CaseSearchModel.js.map +1 -1
- package/esm/models/tab/TabModel.js +6 -0
- package/esm/models/tab/TabModel.js.map +1 -1
- package/esm/models/taskgroup/TaskGroupModel.js +6 -0
- package/esm/models/taskgroup/TaskGroupModel.js.map +1 -1
- package/esm/models/types.js.map +1 -1
- package/esm/models/user/UserModel.js +6 -0
- package/esm/models/user/UserModel.js.map +1 -1
- package/esm/models/user/UserProfileModel.js +6 -0
- package/esm/models/user/UserProfileModel.js.map +1 -1
- package/esm/models/user/UserServicesModel.js +6 -0
- package/esm/models/user/UserServicesModel.js.map +1 -1
- package/esm/modularui/ModularUIRequest.js +38 -11
- package/esm/modularui/ModularUIRequest.js.map +1 -1
- package/esm/modularui/types.js +2 -0
- package/esm/modularui/types.js.map +1 -0
- package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
- package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/esm/redux/_modularui/types.js.map +1 -1
- package/esm/redux/_modularui/withModularUI.js.map +1 -1
- package/esm/utils/fetch/types.js.map +1 -1
- package/lib/constants/Constants.js +7 -1
- package/lib/constants/Constants.js.flow +6 -0
- package/lib/constants/Constants.js.map +1 -1
- package/lib/hooks/__tests__/UseModularUIModel.spec.js.flow +1 -1
- package/lib/hooks/__tests__/useModelCatalog.spec.js.flow +1 -1
- package/lib/hooks/__tests__/useModularUIBasic.spec.js.flow +2 -2
- package/lib/hooks/useAuthentication.js +4 -4
- package/lib/hooks/useAuthentication.js.flow +17 -5
- package/lib/hooks/useAuthentication.js.map +1 -1
- package/lib/hooks/useModularUI.js.flow +2 -2
- package/lib/hooks/useModularUI.js.map +1 -1
- package/lib/hooks/useModularUIBasic.js +3 -0
- package/lib/hooks/useModularUIBasic.js.flow +6 -3
- package/lib/hooks/useModularUIBasic.js.map +1 -1
- package/lib/hooks/useModularUIModel.js +9 -1
- package/lib/hooks/useModularUIModel.js.flow +18 -10
- package/lib/hooks/useModularUIModel.js.map +1 -1
- package/lib/hooks/useModularUIRequest.js +5 -7
- package/lib/hooks/useModularUIRequest.js.flow +12 -11
- package/lib/hooks/useModularUIRequest.js.map +1 -1
- package/lib/models/application/ApplicationModel.js +8 -1
- package/lib/models/application/ApplicationModel.js.flow +10 -1
- package/lib/models/application/ApplicationModel.js.map +1 -1
- package/lib/models/base/ResourceModel.js +7 -0
- package/lib/models/base/ResourceModel.js.flow +7 -0
- package/lib/models/base/ResourceModel.js.map +1 -1
- package/lib/models/caseview/CaseViewModel.js +6 -0
- package/lib/models/caseview/CaseViewModel.js.flow +6 -0
- package/lib/models/caseview/CaseViewModel.js.map +1 -1
- package/lib/models/concepts/BusinessScenarioModel.js +6 -0
- package/lib/models/concepts/BusinessScenarioModel.js.flow +6 -0
- package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/lib/models/concepts/ConceptDetailModel.js +6 -0
- package/lib/models/concepts/ConceptDetailModel.js.flow +6 -0
- package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
- package/lib/models/concepts/ConceptIndexModel.js +6 -0
- package/lib/models/concepts/ConceptIndexModel.js.flow +6 -0
- package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
- package/lib/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/lib/models/concepts/ConceptTypeDetailModel.js.flow +6 -0
- package/lib/models/concepts/ConceptTypeDetailModel.js.map +1 -1
- package/lib/models/content/ContentIndexModel.js +6 -0
- package/lib/models/content/ContentIndexModel.js.flow +6 -0
- package/lib/models/content/ContentIndexModel.js.map +1 -1
- package/lib/models/content/ContentModel.js +6 -0
- package/lib/models/content/ContentModel.js.flow +6 -0
- package/lib/models/content/ContentModel.js.map +1 -1
- package/lib/models/content/ContentTOCModel.js +6 -0
- package/lib/models/content/ContentTOCModel.js.flow +6 -0
- package/lib/models/content/ContentTOCModel.js.map +1 -1
- package/lib/models/content/ContentTypeModel.js +6 -0
- package/lib/models/content/ContentTypeModel.js.flow +6 -0
- package/lib/models/content/ContentTypeModel.js.map +1 -1
- package/lib/models/detail/DetailModel.js +6 -0
- package/lib/models/detail/DetailModel.js.flow +6 -0
- package/lib/models/detail/DetailModel.js.map +1 -1
- package/lib/models/form/FormModel.js +6 -0
- package/lib/models/form/FormModel.js.flow +6 -0
- package/lib/models/form/FormModel.js.map +1 -1
- package/lib/models/list/ListDetailModel.js +6 -0
- package/lib/models/list/ListDetailModel.js.flow +6 -0
- package/lib/models/list/ListDetailModel.js.map +1 -1
- package/lib/models/list/ListModel.js +6 -0
- package/lib/models/list/ListModel.js.flow +6 -0
- package/lib/models/list/ListModel.js.map +1 -1
- package/lib/models/lookup/LookupOptionsModel.js +6 -0
- package/lib/models/lookup/LookupOptionsModel.js.flow +6 -0
- package/lib/models/lookup/LookupOptionsModel.js.map +1 -1
- package/lib/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/lib/models/modelcatalog/ModelCatalogModel.js.flow +6 -0
- package/lib/models/modelcatalog/ModelCatalogModel.js.map +1 -1
- package/lib/models/panels/GroupingPanelModel.js +6 -0
- package/lib/models/panels/GroupingPanelModel.js.flow +6 -0
- package/lib/models/panels/GroupingPanelModel.js.map +1 -1
- package/lib/models/resolveModel.js +4 -3
- package/lib/models/resolveModel.js.flow +6 -4
- package/lib/models/resolveModel.js.map +1 -1
- package/lib/models/search/CaseSearchModel.js +6 -0
- package/lib/models/search/CaseSearchModel.js.flow +6 -0
- package/lib/models/search/CaseSearchModel.js.map +1 -1
- package/lib/models/tab/TabModel.js +6 -0
- package/lib/models/tab/TabModel.js.flow +6 -0
- package/lib/models/tab/TabModel.js.map +1 -1
- package/lib/models/taskgroup/TaskGroupModel.js +6 -0
- package/lib/models/taskgroup/TaskGroupModel.js.flow +6 -0
- package/lib/models/taskgroup/TaskGroupModel.js.map +1 -1
- package/lib/models/types.js.flow +1 -1
- package/lib/models/types.js.map +1 -1
- package/lib/models/user/UserModel.js +6 -0
- package/lib/models/user/UserModel.js.flow +6 -0
- package/lib/models/user/UserModel.js.map +1 -1
- package/lib/models/user/UserProfileModel.js +6 -0
- package/lib/models/user/UserProfileModel.js.flow +6 -0
- package/lib/models/user/UserProfileModel.js.map +1 -1
- package/lib/models/user/UserServicesModel.js +6 -0
- package/lib/models/user/UserServicesModel.js.flow +6 -0
- package/lib/models/user/UserServicesModel.js.map +1 -1
- package/lib/modularui/ModularUIRequest.js +38 -11
- package/lib/modularui/ModularUIRequest.js.flow +65 -17
- package/lib/modularui/ModularUIRequest.js.map +1 -1
- package/lib/modularui/__tests__/ModularUIRequest.spec.js.flow +4 -9
- package/lib/modularui/types.js +2 -0
- package/lib/modularui/types.js.flow +4 -0
- package/lib/modularui/types.js.map +1 -0
- package/lib/redux/_modularui/ModularUIActions.js.flow +4 -4
- package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
- package/lib/redux/_modularui/ModularUIMiddleware.js.flow +3 -2
- package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/lib/redux/_modularui/types.js.flow +4 -3
- package/lib/redux/_modularui/types.js.map +1 -1
- package/lib/redux/_modularui/withModularUI.js.flow +2 -2
- package/lib/redux/_modularui/withModularUI.js.map +1 -1
- package/lib/utils/fetch/types.js.flow +12 -4
- package/lib/utils/fetch/types.js.map +1 -1
- package/package.json +7 -7
- package/src/constants/Constants.js +6 -0
- package/src/hooks/__tests__/UseModularUIModel.spec.js +1 -1
- package/src/hooks/__tests__/useModelCatalog.spec.js +1 -1
- package/src/hooks/__tests__/useModularUIBasic.spec.js +2 -2
- package/src/hooks/useAuthentication.js +17 -5
- package/src/hooks/useModularUI.js +2 -2
- package/src/hooks/useModularUIBasic.js +6 -3
- package/src/hooks/useModularUIModel.js +18 -10
- package/src/hooks/useModularUIRequest.js +12 -11
- package/src/models/application/ApplicationModel.js +10 -1
- package/src/models/base/ResourceModel.js +7 -0
- package/src/models/caseview/CaseViewModel.js +6 -0
- package/src/models/concepts/BusinessScenarioModel.js +6 -0
- package/src/models/concepts/ConceptDetailModel.js +6 -0
- package/src/models/concepts/ConceptIndexModel.js +6 -0
- package/src/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/src/models/content/ContentIndexModel.js +6 -0
- package/src/models/content/ContentModel.js +6 -0
- package/src/models/content/ContentTOCModel.js +6 -0
- package/src/models/content/ContentTypeModel.js +6 -0
- package/src/models/detail/DetailModel.js +6 -0
- package/src/models/form/FormModel.js +6 -0
- package/src/models/list/ListDetailModel.js +6 -0
- package/src/models/list/ListModel.js +6 -0
- package/src/models/lookup/LookupOptionsModel.js +6 -0
- package/src/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/src/models/panels/GroupingPanelModel.js +6 -0
- package/src/models/resolveModel.js +6 -4
- package/src/models/search/CaseSearchModel.js +6 -0
- package/src/models/tab/TabModel.js +6 -0
- package/src/models/taskgroup/TaskGroupModel.js +6 -0
- package/src/models/types.js +1 -1
- package/src/models/user/UserModel.js +6 -0
- package/src/models/user/UserProfileModel.js +6 -0
- package/src/models/user/UserServicesModel.js +6 -0
- package/src/modularui/ModularUIRequest.js +65 -17
- package/src/modularui/__tests__/ModularUIRequest.spec.js +4 -9
- package/src/modularui/types.js +4 -0
- package/src/redux/_modularui/ModularUIActions.js +4 -4
- package/src/redux/_modularui/ModularUIMiddleware.js +3 -2
- package/src/redux/_modularui/types.js +4 -3
- package/src/redux/_modularui/withModularUI.js +2 -2
- package/src/utils/fetch/types.js +12 -4
- package/types/constants/Constants.d.ts +5 -0
- package/types/models/base/ResourceModel.d.ts +4 -0
- package/types/models/form/FormObjectModel.d.ts +28 -2
- package/types/models/resolveModel.d.ts +1 -1
- package/types/models/types.d.ts +1 -1
- package/types/modularui/ModularUIRequest.d.ts +15 -7
- package/types/modularui/types.d.ts +2 -0
- package/types/redux/_modularui/types.d.ts +2 -2
- package/types/utils/fetch/types.d.ts +8 -5
|
@@ -95,6 +95,12 @@ class FormModel extends ResourceModel {
|
|
|
95
95
|
return this.getContribution("actiontype", "form");
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
*/
|
|
100
|
+
static get modelName(): string {
|
|
101
|
+
return "FormModel";
|
|
102
|
+
}
|
|
103
|
+
|
|
98
104
|
/**
|
|
99
105
|
*/
|
|
100
106
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -83,6 +83,12 @@ export default class ListDetailModel extends DetailModel {
|
|
|
83
83
|
return "ListDetail";
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
/**
|
|
87
|
+
*/
|
|
88
|
+
static get modelName(): string {
|
|
89
|
+
return "ListDetailModel";
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
/**
|
|
87
93
|
*/
|
|
88
94
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -33,6 +33,12 @@ export default class LookupOptionsModel extends ResourceModel {
|
|
|
33
33
|
return "LookupOptions";
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
*/
|
|
38
|
+
static get modelName(): string {
|
|
39
|
+
return "LookupOptionsModel";
|
|
40
|
+
}
|
|
41
|
+
|
|
36
42
|
/**
|
|
37
43
|
*/
|
|
38
44
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -30,6 +30,12 @@ export default class GroupingPanelModel extends ResourceModel {
|
|
|
30
30
|
return "GroupingPanel";
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
*/
|
|
35
|
+
static get modelName(): string {
|
|
36
|
+
return "GroupingPanelModel";
|
|
37
|
+
}
|
|
38
|
+
|
|
33
39
|
/**
|
|
34
40
|
*/
|
|
35
41
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -25,9 +25,10 @@ import ContentModel from "./content/ContentModel";
|
|
|
25
25
|
import ContentTypeModel from "./content/ContentTypeModel";
|
|
26
26
|
import LookupOptionsModel from "./lookup/LookupOptionsModel";
|
|
27
27
|
|
|
28
|
+
import { IllegalArgumentException } from "../exceptions";
|
|
29
|
+
|
|
28
30
|
import type ModularUIResponse from "../modularui/ModularUIResponse";
|
|
29
31
|
import type { ModularUIModel } from "./types";
|
|
30
|
-
import { IllegalArgumentException } from "../exceptions";
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* Mapping of models and resourcetypes
|
|
@@ -62,7 +63,8 @@ const RESOURCE_MODELS = [
|
|
|
62
63
|
* Resolve a model by resource
|
|
63
64
|
*/
|
|
64
65
|
const resolveModel = (
|
|
65
|
-
data: ModularUIResponse
|
|
66
|
+
data: ModularUIResponse,
|
|
67
|
+
availableModels: Array<Class<ModularUIModel>> = RESOURCE_MODELS
|
|
66
68
|
): Class<ModularUIModel> | null => {
|
|
67
69
|
if (!data) {
|
|
68
70
|
throw new IllegalArgumentException(
|
|
@@ -72,11 +74,11 @@ const resolveModel = (
|
|
|
72
74
|
|
|
73
75
|
if (!has(data.contributions, "resourcetype")) {
|
|
74
76
|
throw new IllegalArgumentException(
|
|
75
|
-
"Data has wrong format, missing resourcetype in contributions, cannot resolve model"
|
|
77
|
+
"Data has wrong format, missing resourcetype property in contributions, cannot resolve model"
|
|
76
78
|
);
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
const resourceTypeModel =
|
|
81
|
+
const resourceTypeModel = availableModels.find((resourceModel) =>
|
|
80
82
|
resourceModel.isApplicableModel(data)
|
|
81
83
|
);
|
|
82
84
|
|
|
@@ -14,6 +14,12 @@ export default class CaseSearchModel extends ListModel {
|
|
|
14
14
|
return "CaseSearch";
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
*/
|
|
19
|
+
static get modelName(): string {
|
|
20
|
+
return "CaseSearchModel";
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
/**
|
|
18
24
|
*/
|
|
19
25
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -51,6 +51,12 @@ export default class TaskGroupModel extends ResourceModel {
|
|
|
51
51
|
return "TaskGroup";
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
*/
|
|
56
|
+
static get modelName(): string {
|
|
57
|
+
return "TaskGroupModel";
|
|
58
|
+
}
|
|
59
|
+
|
|
54
60
|
/**
|
|
55
61
|
*/
|
|
56
62
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
package/src/models/types.js
CHANGED
|
@@ -25,7 +25,11 @@ import { IllegalArgumentException, IllegalStateException } from "../exceptions";
|
|
|
25
25
|
|
|
26
26
|
import { isPlainObject } from "../utils/helpers/objects";
|
|
27
27
|
|
|
28
|
-
import type {
|
|
28
|
+
import type { TargetModel } from "./types";
|
|
29
|
+
import type {
|
|
30
|
+
RequestBaseOptions,
|
|
31
|
+
RequestModularUIOptions,
|
|
32
|
+
} from "../utils/fetch/types";
|
|
29
33
|
import type { ModularUIModel } from "../models/types";
|
|
30
34
|
|
|
31
35
|
/**
|
|
@@ -36,8 +40,8 @@ class ModularUIRequest {
|
|
|
36
40
|
_response: ModularUIResponse;
|
|
37
41
|
|
|
38
42
|
_href: Href;
|
|
39
|
-
_options:
|
|
40
|
-
_targetModel: ?
|
|
43
|
+
_options: RequestModularUIOptions;
|
|
44
|
+
_targetModel: ?TargetModel;
|
|
41
45
|
_contributionsHref: string;
|
|
42
46
|
_locale: string;
|
|
43
47
|
_method: $Keys<typeof HTTP_METHODS> = HTTP_METHODS.GET;
|
|
@@ -46,7 +50,10 @@ class ModularUIRequest {
|
|
|
46
50
|
|
|
47
51
|
/**
|
|
48
52
|
*/
|
|
49
|
-
constructor(
|
|
53
|
+
constructor(
|
|
54
|
+
href: Href | string,
|
|
55
|
+
options: $Shape<RequestModularUIOptions> = {}
|
|
56
|
+
) {
|
|
50
57
|
if (!href) {
|
|
51
58
|
throw new IllegalArgumentException(
|
|
52
59
|
"You must pass a href to the resource that is requested"
|
|
@@ -132,7 +139,7 @@ class ModularUIRequest {
|
|
|
132
139
|
|
|
133
140
|
/**
|
|
134
141
|
*/
|
|
135
|
-
get options():
|
|
142
|
+
get options(): RequestModularUIOptions {
|
|
136
143
|
return {
|
|
137
144
|
...this._options,
|
|
138
145
|
locale: this.locale,
|
|
@@ -142,7 +149,23 @@ class ModularUIRequest {
|
|
|
142
149
|
|
|
143
150
|
/**
|
|
144
151
|
*/
|
|
145
|
-
|
|
152
|
+
get requestOptions(): RequestBaseOptions {
|
|
153
|
+
/* eslint-disable no-unused-vars */
|
|
154
|
+
const {
|
|
155
|
+
targetModel,
|
|
156
|
+
updateModel,
|
|
157
|
+
childmodels,
|
|
158
|
+
isValidationRequest,
|
|
159
|
+
removeOnUnmount,
|
|
160
|
+
...requestOptions
|
|
161
|
+
} = this.options;
|
|
162
|
+
/* eslint-enable no-unused-vars */
|
|
163
|
+
return requestOptions;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
*/
|
|
168
|
+
set options(options: RequestModularUIOptions) {
|
|
146
169
|
this._options = options;
|
|
147
170
|
}
|
|
148
171
|
|
|
@@ -156,31 +179,57 @@ class ModularUIRequest {
|
|
|
156
179
|
|
|
157
180
|
/**
|
|
158
181
|
*/
|
|
159
|
-
set targetModel(targetModel:
|
|
182
|
+
set targetModel(targetModel: TargetModel) {
|
|
160
183
|
this._targetModel = targetModel;
|
|
161
184
|
}
|
|
162
185
|
|
|
163
186
|
/**
|
|
164
187
|
*/
|
|
165
|
-
get targetModel(): ?
|
|
188
|
+
get targetModel(): ?TargetModel {
|
|
166
189
|
return this._targetModel;
|
|
167
190
|
}
|
|
168
191
|
|
|
169
192
|
/**
|
|
170
193
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
194
|
+
resolveModel(): Class<ModularUIModel> {
|
|
195
|
+
let availableModels;
|
|
196
|
+
if (this.targetModel) {
|
|
197
|
+
availableModels = Array.isArray(this.targetModel)
|
|
198
|
+
? [...this.targetModel]
|
|
199
|
+
: [this.targetModel];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const Model: Class<ModularUIModel> | null = resolveModel(
|
|
203
|
+
this.response,
|
|
204
|
+
availableModels
|
|
205
|
+
);
|
|
173
206
|
|
|
174
|
-
// check for ResourceModel
|
|
175
207
|
if (Model && Model.isApplicableModel) {
|
|
176
|
-
return
|
|
208
|
+
return Model;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (availableModels) {
|
|
212
|
+
throw new IllegalStateException(
|
|
213
|
+
`data is not applicable for model(s): ${availableModels
|
|
214
|
+
.map((m) => m.modelName)
|
|
215
|
+
.join(", ")}`
|
|
216
|
+
);
|
|
177
217
|
}
|
|
178
218
|
|
|
179
219
|
throw new IllegalStateException(
|
|
180
|
-
`
|
|
220
|
+
`no javascript model is applicable for received response: ${JSON.stringify(
|
|
221
|
+
this.response
|
|
222
|
+
)}`
|
|
181
223
|
);
|
|
182
224
|
}
|
|
183
225
|
|
|
226
|
+
/**
|
|
227
|
+
*/
|
|
228
|
+
createModel(): ModularUIModel {
|
|
229
|
+
const Model = this.resolveModel();
|
|
230
|
+
return new Model(this.response);
|
|
231
|
+
}
|
|
232
|
+
|
|
184
233
|
/**
|
|
185
234
|
*/
|
|
186
235
|
processContributionsService(contributionsData: Object): void {
|
|
@@ -274,7 +323,7 @@ class ModularUIRequest {
|
|
|
274
323
|
*/
|
|
275
324
|
fetchDataService(): Promise<any> {
|
|
276
325
|
return universalFetch({
|
|
277
|
-
...this.
|
|
326
|
+
...this.requestOptions,
|
|
278
327
|
url: `${BASE}${this.href.path}`,
|
|
279
328
|
params: this.href.getQuerystringForModularUI(),
|
|
280
329
|
locale: this.options.locale,
|
|
@@ -451,7 +500,7 @@ class ModularUIRequest {
|
|
|
451
500
|
);
|
|
452
501
|
|
|
453
502
|
return universalFetch({
|
|
454
|
-
...this.
|
|
503
|
+
...this.requestOptions,
|
|
455
504
|
url: `${BASE}${href}`,
|
|
456
505
|
})
|
|
457
506
|
.then((response: Object) => {
|
|
@@ -519,10 +568,9 @@ class ModularUIRequest {
|
|
|
519
568
|
) {
|
|
520
569
|
const validationHref = this.href.setParameter("commit", "false");
|
|
521
570
|
return universalFetch({
|
|
522
|
-
...this.
|
|
571
|
+
...this.requestOptions,
|
|
523
572
|
url: `${BASE}${this.href.path}`,
|
|
524
573
|
params: validationHref.getQuerystringForModularUI(),
|
|
525
|
-
childmodels: false,
|
|
526
574
|
data: this.getDynamicValidationData(model),
|
|
527
575
|
}).then((data) => {
|
|
528
576
|
if (data == null || typeof data !== "object") {
|
|
@@ -115,17 +115,12 @@ describe("modularUIRequest", () => {
|
|
|
115
115
|
expect(requestWithChildModels.withChildModels).toBe(true);
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
it("
|
|
118
|
+
it("Throws when data is missing", () => {
|
|
119
119
|
const requestWithTargetModel = new ModularUIRequest("/");
|
|
120
120
|
requestWithTargetModel.targetModel = ApplicationModel;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const wrongTargetModel = new ModularUIRequest("/");
|
|
126
|
-
wrongTargetModel.targetModel = Href;
|
|
127
|
-
|
|
128
|
-
expect(() => wrongTargetModel.createModel()).toThrow(IllegalStateException);
|
|
121
|
+
expect(() => requestWithTargetModel.createModel()).toThrow(
|
|
122
|
+
IllegalArgumentException
|
|
123
|
+
);
|
|
129
124
|
});
|
|
130
125
|
|
|
131
126
|
it("creates a model from a response", () => {
|
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
ResetModularUIAction,
|
|
16
16
|
UpdateStatusAction,
|
|
17
17
|
} from "./types";
|
|
18
|
-
import type {
|
|
18
|
+
import type { RequestModularUIOptions } from "../../utils/fetch/types";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
*/
|
|
@@ -94,7 +94,7 @@ const loadModelSuccessAction = (
|
|
|
94
94
|
export const loadModel = (
|
|
95
95
|
key: string,
|
|
96
96
|
href: Href | string,
|
|
97
|
-
options?:
|
|
97
|
+
options?: RequestModularUIOptions
|
|
98
98
|
): ModularUIAction => ({
|
|
99
99
|
type: "MODULARUI/FETCH",
|
|
100
100
|
payload: {
|
|
@@ -131,7 +131,7 @@ export const loadModularUI =
|
|
|
131
131
|
(
|
|
132
132
|
key: string,
|
|
133
133
|
href: Href | string,
|
|
134
|
-
options?:
|
|
134
|
+
options?: RequestModularUIOptions
|
|
135
135
|
): ThunkAction =>
|
|
136
136
|
(dispatch: Dispatch) => {
|
|
137
137
|
dispatch(updateStatus(key, MODULARUI_STATUS.LOADING));
|
|
@@ -154,7 +154,7 @@ export const loadModularUI =
|
|
|
154
154
|
*/
|
|
155
155
|
export const reloadModel = (
|
|
156
156
|
model: ModularUIModel,
|
|
157
|
-
options?:
|
|
157
|
+
options?: RequestModularUIOptions
|
|
158
158
|
): ThunkAction =>
|
|
159
159
|
loadModularUI(model.connectKey, model.selfhref, {
|
|
160
160
|
...options,
|
|
@@ -16,6 +16,7 @@ import type {
|
|
|
16
16
|
import type { ModularUIModel } from "../../models/types";
|
|
17
17
|
import type Href from "../../models/href/Href";
|
|
18
18
|
import type { ModularUIAction, SuccessAction, ErrorAction } from "./types";
|
|
19
|
+
import type { TargetModel } from "../../modularui/types";
|
|
19
20
|
|
|
20
21
|
type RequestOptions = {
|
|
21
22
|
href: Href,
|
|
@@ -23,14 +24,14 @@ type RequestOptions = {
|
|
|
23
24
|
data?: string | { [key: string]: string },
|
|
24
25
|
locale: string,
|
|
25
26
|
childmodels?: boolean,
|
|
26
|
-
targetModel?:
|
|
27
|
+
targetModel?: TargetModel,
|
|
27
28
|
isReload?: boolean,
|
|
28
29
|
};
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Symbol key that carries API call info interpreted by this Redux middleware.
|
|
32
33
|
*/
|
|
33
|
-
const createRequest = (modularui: RequestOptions) => {
|
|
34
|
+
const createRequest = (modularui: RequestOptions): ModularUIRequest => {
|
|
34
35
|
const request = new ModularUIRequest(modularui.href, {
|
|
35
36
|
method: modularui.method || HTTP_METHODS.GET,
|
|
36
37
|
data: modularui.data || {},
|
|
@@ -7,13 +7,14 @@ import typeof {
|
|
|
7
7
|
HTTP_METHODS,
|
|
8
8
|
MODULARUI_STATUS,
|
|
9
9
|
} from "../../constants/Constants";
|
|
10
|
-
import type { RequestBaseOptions } from "../../utils/fetch/types";
|
|
11
10
|
import type { ComponentType } from "react";
|
|
11
|
+
import type { TargetModel } from "../../modularui/types";
|
|
12
|
+
import type { RequestModularUIOptions } from "../../utils/fetch/types";
|
|
12
13
|
|
|
13
14
|
export type ModularUIOptions = {
|
|
14
15
|
propName?: string,
|
|
15
16
|
removeOnUnmount?: boolean,
|
|
16
|
-
...
|
|
17
|
+
...RequestModularUIOptions,
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export type ModelEntry = {
|
|
@@ -56,7 +57,7 @@ export type ModularUIAction = {
|
|
|
56
57
|
data?: string | { [key: string]: string },
|
|
57
58
|
locale: string,
|
|
58
59
|
childmodels?: boolean,
|
|
59
|
-
targetModel?:
|
|
60
|
+
targetModel?: TargetModel,
|
|
60
61
|
successAction: (
|
|
61
62
|
model: ModularUIModel
|
|
62
63
|
) => UpdateModelAction | SetModelAction,
|
|
@@ -21,9 +21,9 @@ import type {
|
|
|
21
21
|
} from "../types";
|
|
22
22
|
import type Href from "../../models/href/Href";
|
|
23
23
|
import type { ModularUIModel } from "../../models/types";
|
|
24
|
-
import type { RequestBaseOptions } from "../../utils/fetch/types";
|
|
25
24
|
import type FetchException from "../../exceptions/FetchException";
|
|
26
25
|
import type { ComponentType } from "react";
|
|
26
|
+
import type { RequestModularUIOptions } from "../../utils/fetch/types";
|
|
27
27
|
|
|
28
28
|
type StateProps = {
|
|
29
29
|
modularui: (href: Href, options: any) => ModularUIRequest,
|
|
@@ -35,7 +35,7 @@ type DispatchProps = {
|
|
|
35
35
|
finishProgress: () => FinishProgressAction,
|
|
36
36
|
reloadModel: (
|
|
37
37
|
model: ModularUIModel,
|
|
38
|
-
options?:
|
|
38
|
+
options?: RequestModularUIOptions
|
|
39
39
|
) => ThunkAction,
|
|
40
40
|
handleError: (error: Error | FetchException) => ThunkAction,
|
|
41
41
|
};
|
package/src/utils/fetch/types.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import typeof { HTTP_METHODS } from "../../constants/Constants";
|
|
3
3
|
import type { ModularUIModel } from "../../models/types";
|
|
4
|
+
import type { TargetModel } from "../../modularui/types";
|
|
4
5
|
|
|
5
6
|
export type RequestURLOptions = {
|
|
6
7
|
url: string,
|
|
7
8
|
};
|
|
9
|
+
|
|
8
10
|
export type RequestBaseOptions = {
|
|
9
11
|
method?: $Keys<HTTP_METHODS>,
|
|
10
12
|
params?: string,
|
|
@@ -24,11 +26,17 @@ export type RequestBaseOptions = {
|
|
|
24
26
|
includeContext?: boolean,
|
|
25
27
|
locale?: string,
|
|
26
28
|
cache?: boolean,
|
|
29
|
+
isReload?: boolean,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };
|
|
33
|
+
|
|
34
|
+
export type RequestModularUIOptions = {
|
|
35
|
+
...RequestBaseOptions,
|
|
36
|
+
targetModel?: TargetModel,
|
|
37
|
+
updateModel?: ModularUIModel,
|
|
27
38
|
childmodels?: boolean,
|
|
28
39
|
isValidationRequest?: boolean,
|
|
29
|
-
|
|
30
|
-
updateModel?: ModularUIModel,
|
|
31
|
-
isReload?: boolean,
|
|
40
|
+
|
|
32
41
|
removeOnUnmount?: boolean,
|
|
33
42
|
};
|
|
34
|
-
export type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };
|
|
@@ -149,3 +149,8 @@ export const LOGIN_PATH_SETTING: "FormClient.login_url";
|
|
|
149
149
|
export const LOGIN_USERNAME_SETTING: "FormClient.username_field_name";
|
|
150
150
|
export const LOGIN_PASSWORD_SETTING: "FormClient.password_field_name";
|
|
151
151
|
export const LOGOUT_PATH_SETTING: "FormClient.logout_url";
|
|
152
|
+
export namespace fallbackDefaultAuthenticationType {
|
|
153
|
+
const name: string;
|
|
154
|
+
const authentication: string;
|
|
155
|
+
const isPrimary: boolean;
|
|
156
|
+
}
|
|
@@ -3,6 +3,10 @@ export default ResourceModel;
|
|
|
3
3
|
* Base model, this the foundation for models that represent modular ui services, e.g. application, tab, caseview, etc
|
|
4
4
|
*/
|
|
5
5
|
declare class ResourceModel extends BaseModel {
|
|
6
|
+
/**
|
|
7
|
+
* Property to render name of a model, is original name after transpilation
|
|
8
|
+
*/
|
|
9
|
+
static get modelName(): string;
|
|
6
10
|
/**
|
|
7
11
|
* Returns true when the model is supported based on configuration found in contributions
|
|
8
12
|
*
|
|
@@ -145,8 +145,33 @@ export default class FormObjectModel extends BaseModel {
|
|
|
145
145
|
/**
|
|
146
146
|
*/
|
|
147
147
|
get dynamicValidationsLoaded(): boolean;
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Convert error json from a form service to validation messages on the form object and attributes
|
|
150
|
+
*/
|
|
151
|
+
handleErrorValidations(errors: Array<{
|
|
152
|
+
anchor: {
|
|
153
|
+
objectid: string;
|
|
154
|
+
elementid?: string;
|
|
155
|
+
};
|
|
156
|
+
id: string;
|
|
157
|
+
message: string;
|
|
158
|
+
properties: MessageParameters;
|
|
159
|
+
layouthint: Array<string>;
|
|
160
|
+
}>): void;
|
|
161
|
+
/**
|
|
162
|
+
* Convert missing json from a form service to mandatory validation constraints and messages
|
|
163
|
+
*/
|
|
164
|
+
handleMissingValidations(missing: {
|
|
165
|
+
anchors: Array<{
|
|
166
|
+
elements: Array<{
|
|
167
|
+
elementid: string;
|
|
168
|
+
}>;
|
|
169
|
+
} | {
|
|
170
|
+
anchor: {
|
|
171
|
+
elementid: string;
|
|
172
|
+
};
|
|
173
|
+
}>;
|
|
174
|
+
}): void;
|
|
150
175
|
/**
|
|
151
176
|
*/
|
|
152
177
|
updateValidations(data: any): FormObjectModel;
|
|
@@ -168,3 +193,4 @@ import { AttributeType } from "../types";
|
|
|
168
193
|
import LinkModel from "../links/LinkModel";
|
|
169
194
|
import { ModularUIModel } from "../types";
|
|
170
195
|
import { FormErrorAnchor } from "../types";
|
|
196
|
+
import { MessageParameters } from "../../i18n/types";
|
|
@@ -2,6 +2,6 @@ export default resolveModel;
|
|
|
2
2
|
/**
|
|
3
3
|
* Resolve a model by resource
|
|
4
4
|
*/
|
|
5
|
-
declare function resolveModel(data: ModularUIResponse): Class<ModularUIModel> | null;
|
|
5
|
+
declare function resolveModel(data: ModularUIResponse, availableModels?: Array<Class<ModularUIModel>>): Class<ModularUIModel> | null;
|
|
6
6
|
import ModularUIResponse from "../modularui/ModularUIResponse";
|
|
7
7
|
import { ModularUIModel } from "./types";
|