@beinformed/ui 1.60.6 → 1.61.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/CHANGELOG.md +19 -0
- package/esm/models/attributes/AttributeCollection.js +2 -2
- package/esm/models/attributes/AttributeCollection.js.map +1 -1
- package/esm/models/attributes/AttributeContent.js +1 -1
- package/esm/models/attributes/AttributeContent.js.flow +1 -1
- package/esm/models/attributes/AttributeContent.js.map +1 -1
- package/esm/models/attributes/CompositeAttributeChildCollection.js +4 -4
- package/esm/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
- package/esm/models/concepts/ConceptDetailModel.js +9 -9
- package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
- package/esm/models/content/ContentTOCModel.d.ts +7 -0
- package/esm/models/content/ContentTOCModel.js +35 -8
- package/esm/models/content/ContentTOCModel.js.flow +36 -9
- package/esm/models/content/ContentTOCModel.js.map +1 -1
- package/esm/models/content/SectionModel.d.ts +3 -0
- package/esm/models/content/SectionModel.js +11 -2
- package/esm/models/content/SectionModel.js.flow +11 -0
- package/esm/models/content/SectionModel.js.map +1 -1
- package/esm/models/content/SubSectionModel.d.ts +1 -1
- package/esm/models/content/SubSectionModel.js.flow +1 -1
- package/esm/models/content/SubSectionModel.js.map +1 -1
- package/esm/models/content/__tests__/Formalsource.spec.js.flow +91 -0
- package/esm/models/form/FormModel.js +33 -33
- package/esm/models/form/FormModel.js.map +1 -1
- package/esm/models/form/FormObjectModel.d.ts +13 -12
- package/esm/models/form/FormObjectModel.js +12 -9
- package/esm/models/form/FormObjectModel.js.flow +42 -27
- package/esm/models/form/FormObjectModel.js.map +1 -1
- package/esm/models/form/__tests__/FormValidation.spec.js.flow +79 -0
- package/esm/models/href/Href.js +6 -6
- package/esm/models/href/Href.js.map +1 -1
- package/esm/models/links/LinkCollection.js +4 -4
- package/esm/models/links/LinkCollection.js.map +1 -1
- package/esm/redux/_modularui/ModularUISelectors.js +2 -2
- package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
- package/esm/utils/helpers/text.d.ts +1 -1
- package/esm/utils/helpers/text.js +1 -1
- package/esm/utils/helpers/text.js.flow +2 -2
- package/esm/utils/helpers/text.js.map +1 -1
- package/lib/hooks/useDeepCompareEffect.js +1 -2
- package/lib/hooks/useDeepCompareEffect.js.map +1 -1
- package/lib/i18n/index.js +1 -2
- package/lib/i18n/index.js.map +1 -1
- package/lib/models/attributes/AttributeCollection.js +2 -2
- package/lib/models/attributes/AttributeCollection.js.map +1 -1
- package/lib/models/attributes/AttributeContent.js +1 -1
- package/lib/models/attributes/AttributeContent.js.map +1 -1
- package/lib/models/attributes/CompositeAttributeChildCollection.js +4 -4
- package/lib/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
- package/lib/models/concepts/ConceptDetailModel.js +9 -9
- package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
- package/lib/models/content/ContentTOCModel.d.ts +7 -0
- package/lib/models/content/ContentTOCModel.js +35 -8
- package/lib/models/content/ContentTOCModel.js.map +1 -1
- package/lib/models/content/SectionModel.d.ts +3 -0
- package/lib/models/content/SectionModel.js +11 -2
- package/lib/models/content/SectionModel.js.map +1 -1
- package/lib/models/content/SubSectionModel.d.ts +1 -1
- package/lib/models/content/SubSectionModel.js.map +1 -1
- package/lib/models/form/FormModel.js +33 -33
- package/lib/models/form/FormModel.js.map +1 -1
- package/lib/models/form/FormObjectModel.d.ts +13 -12
- package/lib/models/form/FormObjectModel.js +12 -9
- package/lib/models/form/FormObjectModel.js.map +1 -1
- package/lib/models/href/Href.js +6 -6
- package/lib/models/href/Href.js.map +1 -1
- package/lib/models/index.js +1 -2
- package/lib/models/index.js.map +1 -1
- package/lib/models/links/LinkCollection.js +4 -4
- package/lib/models/links/LinkCollection.js.map +1 -1
- package/lib/react-server/serverUtil.js +1 -2
- package/lib/react-server/serverUtil.js.map +1 -1
- package/lib/redux/_modularui/ModularUISelectors.js +2 -2
- package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
- package/lib/utils/helpers/text.d.ts +1 -1
- package/lib/utils/helpers/text.js +1 -1
- package/lib/utils/helpers/text.js.map +1 -1
- package/package.json +17 -17
- package/src/models/attributes/AttributeContent.js +1 -1
- package/src/models/content/ContentTOCModel.js +36 -9
- package/src/models/content/SectionModel.js +11 -0
- package/src/models/content/SubSectionModel.js +1 -1
- package/src/models/content/__tests__/Formalsource.spec.js +91 -0
- package/src/models/content/__tests__/formalsource-complete.json +234 -0
- package/src/models/content/__tests__/formalsource-contributions.json +110 -0
- package/src/models/content/__tests__/formalsource-section-contributions.json +84 -0
- package/src/models/content/__tests__/formalsource-section.json +60 -0
- package/src/models/content/__tests__/formalsource-toc.json +119 -0
- package/src/models/form/FormObjectModel.js +42 -27
- package/src/models/form/__tests__/FormValidation.spec.js +79 -0
- package/src/models/form/__tests__/FormValidationContributions.json +45 -0
- package/src/models/form/__tests__/FormValidationDataInitial.json +33 -0
- package/src/models/form/__tests__/FormValidationDataUpdate1.json +25 -0
- package/src/models/form/__tests__/FormValidationDataUpdate2.json +33 -0
- package/src/utils/helpers/text.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beinformed/ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.61.1",
|
|
4
4
|
"description": "Toolbox for be informed javascript layouts",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"bugs": "https://support.beinformed.com",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"styled-components": "^5.0.0"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@babel/runtime-corejs3": "^7.27.
|
|
71
|
+
"@babel/runtime-corejs3": "^7.27.4",
|
|
72
72
|
"@date-fns/tz": "^1.2.0",
|
|
73
|
-
"big.js": "^
|
|
73
|
+
"big.js": "^7.0.1",
|
|
74
74
|
"date-fns": "^4.1.0",
|
|
75
75
|
"deepmerge": "^4.3.1",
|
|
76
76
|
"dequal": "^2.0.3",
|
|
@@ -86,18 +86,18 @@
|
|
|
86
86
|
"timezone-soft": "^1.5.2"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@babel/cli": "^7.27.
|
|
90
|
-
"@babel/core": "^7.
|
|
91
|
-
"@babel/eslint-parser": "^7.27.
|
|
92
|
-
"@babel/eslint-plugin": "^7.27.
|
|
89
|
+
"@babel/cli": "^7.27.2",
|
|
90
|
+
"@babel/core": "^7.27.4",
|
|
91
|
+
"@babel/eslint-parser": "^7.27.1",
|
|
92
|
+
"@babel/eslint-plugin": "^7.27.1",
|
|
93
93
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
94
94
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
95
|
-
"@babel/plugin-transform-runtime": "^7.
|
|
96
|
-
"@babel/preset-env": "^7.
|
|
97
|
-
"@babel/preset-flow": "^7.
|
|
98
|
-
"@babel/preset-react": "^7.
|
|
99
|
-
"@commitlint/cli": "^19.8.
|
|
100
|
-
"@commitlint/config-conventional": "^19.8.
|
|
95
|
+
"@babel/plugin-transform-runtime": "^7.27.4",
|
|
96
|
+
"@babel/preset-env": "^7.27.2",
|
|
97
|
+
"@babel/preset-flow": "^7.27.1",
|
|
98
|
+
"@babel/preset-react": "^7.27.1",
|
|
99
|
+
"@commitlint/cli": "^19.8.1",
|
|
100
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
101
101
|
"@testing-library/dom": "^10.4.0",
|
|
102
102
|
"@testing-library/react": "^16.3.0",
|
|
103
103
|
"auditjs": "^4.0.46",
|
|
@@ -108,18 +108,18 @@
|
|
|
108
108
|
"cross-env": "^7.0.3",
|
|
109
109
|
"documentation": "^14.0.2",
|
|
110
110
|
"eslint": "^8.57.0",
|
|
111
|
-
"eslint-config-prettier": "^10.1.
|
|
111
|
+
"eslint-config-prettier": "^10.1.5",
|
|
112
112
|
"eslint-plugin-babel": "^5.3.1",
|
|
113
113
|
"eslint-plugin-ft-flow": "^3.0.11",
|
|
114
|
-
"eslint-plugin-jest": "^28.
|
|
115
|
-
"eslint-plugin-jsdoc": "^50.
|
|
114
|
+
"eslint-plugin-jest": "^28.12.0",
|
|
115
|
+
"eslint-plugin-jsdoc": "^50.7.1",
|
|
116
116
|
"eslint-plugin-react": "^7.37.5",
|
|
117
117
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
118
118
|
"eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0",
|
|
119
119
|
"flow-bin": "^0.200.1",
|
|
120
120
|
"flow-copy-source": "^2.0.9",
|
|
121
121
|
"flow-typed": "^3.9.0",
|
|
122
|
-
"hermes-eslint": "^0.28.
|
|
122
|
+
"hermes-eslint": "^0.28.1",
|
|
123
123
|
"history": "^4.0.0",
|
|
124
124
|
"husky": "^9.1.7",
|
|
125
125
|
"jest": "^29.7.0",
|
|
@@ -86,7 +86,7 @@ class AttributeContent {
|
|
|
86
86
|
layouthint: new LayoutHintCollection(layouthint),
|
|
87
87
|
textfragments: textfragments.map((textfragment) => ({
|
|
88
88
|
...textfragment,
|
|
89
|
-
text: retrieveText(textfragment.text),
|
|
89
|
+
text: retrieveText(textfragment.text) || "",
|
|
90
90
|
})),
|
|
91
91
|
},
|
|
92
92
|
};
|
|
@@ -7,11 +7,12 @@ import ContentLinkModel from "./ContentLinkModel";
|
|
|
7
7
|
import ContentTypeModel from "./ContentTypeModel";
|
|
8
8
|
import Href from "../href/Href";
|
|
9
9
|
|
|
10
|
-
import
|
|
10
|
+
import SectionModel from "./SectionModel";
|
|
11
11
|
|
|
12
|
+
import { TIMEVERSION_FILTER_NAME } from "../../constants/Constants";
|
|
13
|
+
import type LinkModel from "../links/LinkModel";
|
|
12
14
|
import type { ModelOptions, ModularUIModel } from "../types";
|
|
13
15
|
import type { ModularUIResponse } from "../../modularui";
|
|
14
|
-
import type LinkModel from "../links/LinkModel";
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Get content items recursively
|
|
@@ -34,6 +35,9 @@ const getItems = (
|
|
|
34
35
|
if (item.items) {
|
|
35
36
|
link.items = getItems(item.items, entryDate, modelOptions);
|
|
36
37
|
}
|
|
38
|
+
if (item.sections) {
|
|
39
|
+
link.items = getItems(item.sections, entryDate, modelOptions);
|
|
40
|
+
}
|
|
37
41
|
|
|
38
42
|
return link;
|
|
39
43
|
});
|
|
@@ -60,10 +64,7 @@ export default class ContentTOCModel extends ResourceModel {
|
|
|
60
64
|
/**
|
|
61
65
|
*/
|
|
62
66
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
63
|
-
return
|
|
64
|
-
data.contributions.resourcetype &&
|
|
65
|
-
data.contributions.resourcetype === "ContentTOC"
|
|
66
|
-
);
|
|
67
|
+
return data.contributions?.resourcetype === "ContentTOC";
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
/**
|
|
@@ -120,9 +121,27 @@ export default class ContentTOCModel extends ResourceModel {
|
|
|
120
121
|
* Get sub items of toc
|
|
121
122
|
*/
|
|
122
123
|
get items(): Array<ContentLinkModel> {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
if (this.data.items) {
|
|
125
|
+
return getItems(this.data.items, this.entryDate, this.modelOptions);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (this.data.sections) {
|
|
129
|
+
return getItems(this.data.sections, this.entryDate, this.modelOptions);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
*/
|
|
137
|
+
get sections(): Array<SectionModel> {
|
|
138
|
+
if (this.data.sections) {
|
|
139
|
+
return this.data.sections.map(
|
|
140
|
+
(section) =>
|
|
141
|
+
new SectionModel(section, this.entryDate, this.modelOptions),
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
return [];
|
|
126
145
|
}
|
|
127
146
|
|
|
128
147
|
/**
|
|
@@ -182,4 +201,12 @@ export default class ContentTOCModel extends ResourceModel {
|
|
|
182
201
|
|
|
183
202
|
return timeversionFilter?.attribute?.value ?? null;
|
|
184
203
|
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
*/
|
|
207
|
+
get isCompleteSource(): boolean {
|
|
208
|
+
const completeFilter =
|
|
209
|
+
this.filterCollection.getFilterByAttributeKey("complete");
|
|
210
|
+
return completeFilter?.attribute?.value === "true";
|
|
211
|
+
}
|
|
185
212
|
}
|
|
@@ -164,6 +164,17 @@ class SectionModel extends BaseModel {
|
|
|
164
164
|
this._childSections = sections || [];
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
/**
|
|
168
|
+
*/
|
|
169
|
+
get sections(): Array<SectionModel> {
|
|
170
|
+
if (this.data.sections) {
|
|
171
|
+
return this.data.sections.map(
|
|
172
|
+
(section) =>
|
|
173
|
+
new SectionModel(section, this.entryDate, this.modelOptions),
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
167
178
|
/**
|
|
168
179
|
* Get sub sections
|
|
169
180
|
*/
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ModularUIResponse } from "../../../modularui";
|
|
2
|
+
|
|
3
|
+
import toc from "./formalsource-toc.json";
|
|
4
|
+
import complete from "./formalsource-complete.json";
|
|
5
|
+
import contributions from "./formalsource-contributions.json";
|
|
6
|
+
|
|
7
|
+
import section from "./formalsource-section.json";
|
|
8
|
+
import sectionContributions from "./formalsource-section-contributions.json";
|
|
9
|
+
|
|
10
|
+
import ContentTOCModel from "../ContentTOCModel";
|
|
11
|
+
import ContentModel from "../ContentModel";
|
|
12
|
+
|
|
13
|
+
describe("formalsource", () => {
|
|
14
|
+
it("TOC model", () => {
|
|
15
|
+
const response = ModularUIResponse.create({
|
|
16
|
+
key: "contentmodel",
|
|
17
|
+
data: toc,
|
|
18
|
+
contributions,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const tocModel = new ContentTOCModel(response);
|
|
22
|
+
|
|
23
|
+
expect(tocModel).toBeInstanceOf(ContentTOCModel);
|
|
24
|
+
|
|
25
|
+
expect(tocModel.label).toBe(
|
|
26
|
+
"Grant Funding Agreement - Terms and Conditions",
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
expect(tocModel.items).toHaveLength(6);
|
|
30
|
+
expect(tocModel.items[0].items).toBeUndefined();
|
|
31
|
+
expect(tocModel.items[1].items).toHaveLength(2);
|
|
32
|
+
|
|
33
|
+
expect(tocModel.isCompleteSource).toBe(false);
|
|
34
|
+
|
|
35
|
+
const firstSection = tocModel.items[0];
|
|
36
|
+
expect(firstSection.label).toBe("1. Introduction");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("Complete model", () => {
|
|
40
|
+
const response = ModularUIResponse.create({
|
|
41
|
+
key: "contentmodel",
|
|
42
|
+
data: complete,
|
|
43
|
+
contributions,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const completeModel = new ContentTOCModel(response);
|
|
47
|
+
|
|
48
|
+
expect(completeModel).toBeInstanceOf(ContentTOCModel);
|
|
49
|
+
|
|
50
|
+
expect(completeModel.items).toHaveLength(6);
|
|
51
|
+
expect(completeModel.items[0].items).toBeUndefined();
|
|
52
|
+
expect(completeModel.items[1].items).toHaveLength(2);
|
|
53
|
+
|
|
54
|
+
expect(completeModel.sections).toHaveLength(6);
|
|
55
|
+
expect(completeModel.sections[0].sections).toHaveLength(0);
|
|
56
|
+
expect(completeModel.sections[1].sections).toHaveLength(2);
|
|
57
|
+
|
|
58
|
+
expect(completeModel.isCompleteSource).toBe(true);
|
|
59
|
+
|
|
60
|
+
const firstSection = completeModel.sections[0];
|
|
61
|
+
expect(firstSection.label).toBe("Introduction");
|
|
62
|
+
expect(firstSection.number).toBe("1.");
|
|
63
|
+
expect(firstSection.body).toBe(null);
|
|
64
|
+
expect(firstSection.subSections).toHaveLength(3);
|
|
65
|
+
expect(firstSection.subSections[0].body).toHaveLength(169);
|
|
66
|
+
|
|
67
|
+
const secondSection = completeModel.sections[1];
|
|
68
|
+
expect(secondSection.label).toBe("Grant Offer");
|
|
69
|
+
expect(secondSection.number).toBe("2.");
|
|
70
|
+
expect(secondSection.body).toBe(null);
|
|
71
|
+
expect(secondSection.sections[0].label).toBe("Payment of Grant");
|
|
72
|
+
expect(secondSection.sections[0].number).toBe("2.1");
|
|
73
|
+
expect(secondSection.sections[0].body).toHaveLength(222);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("Section model", () => {
|
|
77
|
+
const response = ModularUIResponse.create({
|
|
78
|
+
key: "contentmodel",
|
|
79
|
+
data: section,
|
|
80
|
+
contributions: sectionContributions,
|
|
81
|
+
});
|
|
82
|
+
const sectionModel = new ContentModel(response);
|
|
83
|
+
|
|
84
|
+
expect(sectionModel.label).toBe("Grant Offer");
|
|
85
|
+
expect(sectionModel.number).toBe("2.");
|
|
86
|
+
expect(sectionModel.body).toBe(null);
|
|
87
|
+
expect(sectionModel.subSections).toHaveLength(0);
|
|
88
|
+
|
|
89
|
+
expect(sectionModel.childSectionLinks).toHaveLength(2);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
{
|
|
2
|
+
"content": {
|
|
3
|
+
"filter": {
|
|
4
|
+
"complete": {
|
|
5
|
+
"param": "complete",
|
|
6
|
+
"name": "complete",
|
|
7
|
+
"value": "true"
|
|
8
|
+
},
|
|
9
|
+
"searchTerm": {
|
|
10
|
+
"param": "searchTerm",
|
|
11
|
+
"name": "searchTerm"
|
|
12
|
+
},
|
|
13
|
+
"entryDate": {
|
|
14
|
+
"param": "entryDate",
|
|
15
|
+
"name": "entryDate",
|
|
16
|
+
"value": "2025-05-28"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"_links": {
|
|
20
|
+
"self": {
|
|
21
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource"
|
|
22
|
+
},
|
|
23
|
+
"api_doc": {
|
|
24
|
+
"href": "/api-docs/v3/content/(content-identifier)"
|
|
25
|
+
},
|
|
26
|
+
"contributions": {
|
|
27
|
+
"href": "/contributions/content/(content-identifier)"
|
|
28
|
+
},
|
|
29
|
+
"relatedConcepts": {
|
|
30
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/relatedConcepts"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"label": "Grant Funding Agreement - Terms and Conditions",
|
|
34
|
+
"sections": [
|
|
35
|
+
{
|
|
36
|
+
"_links": {
|
|
37
|
+
"self": {
|
|
38
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"label": "Introduction",
|
|
42
|
+
"number": "1.",
|
|
43
|
+
"subSections": [
|
|
44
|
+
{
|
|
45
|
+
"_links": {
|
|
46
|
+
"self": {
|
|
47
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_1"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"body": "<p>This document sets the Terms and Conditions of the Grant Funding Agreement and should be read in conjunction with the Grant Offer Letter and all relevant annexes.<\/p>"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"_links": {
|
|
54
|
+
"self": {
|
|
55
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_2"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"body": "<p>This agreement does not give rise to contractual relations.<\/p>"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"_links": {
|
|
62
|
+
"self": {
|
|
63
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_3"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"body": "<p>This agreement has been revised following wide consultation with Departmental strategic partners and is intended to replace any previous versions.<\/p>"
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"_links": {
|
|
72
|
+
"self": {
|
|
73
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"label": "Grant Offer",
|
|
77
|
+
"number": "2.",
|
|
78
|
+
"sections": [
|
|
79
|
+
{
|
|
80
|
+
"_links": {
|
|
81
|
+
"self": {
|
|
82
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_1"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"label": "Payment of Grant",
|
|
86
|
+
"number": "2.1",
|
|
87
|
+
"body": "<p>Payment of the grant is subject to you complying with these Terms and Conditions together with Annex F of the Grant Offer Letter and to such further conditions and requirements that we may from time to time specify.<\/p>"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"_links": {
|
|
91
|
+
"self": {
|
|
92
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_2"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"label": "Purpose of Funding",
|
|
96
|
+
"number": "2.2",
|
|
97
|
+
"body": "<p>The grant will be paid only in respect of Eligible Expenditure incurred by you to deliver the funded activities. The grant must not be used to fund activities that may be partly-political in intention, use or presentation, or to propagate a religion or belief.<\/p>"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"_links": {
|
|
103
|
+
"self": {
|
|
104
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter3"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"label": "Amount of Grant",
|
|
108
|
+
"number": "3.",
|
|
109
|
+
"body": "<p>The maximum amount of the grant will be stipulated in the Grant Offer Letter; if subsequent years are to be funded, we will send you a formal statement of the amount of grant funding approved for the subsequent years. The amount of grant to be paid in any financial year will be decided by us after considering your estimates of income and expenditure in respect of the grant funded activities as set out in Annex F. The grant reimburses 100% of the agreed actions and activities eligible costs.<\/p>"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"_links": {
|
|
113
|
+
"self": {
|
|
114
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter4"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"label": "Purpose of Grant",
|
|
118
|
+
"number": "4.",
|
|
119
|
+
"body": "<p>The purpose of the Research Grant is to support research activity in a topic area relevant to research practices. The research supported is to increase the evidence base for research and can cover a breadth of topics not limited to the following examples: relevant clinical areas (e.g. brain injury), research practices, sectors and settings, health economics.<\/p>"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"_links": {
|
|
123
|
+
"self": {
|
|
124
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"label": "Eligibility of Grant",
|
|
128
|
+
"number": "5.",
|
|
129
|
+
"sections": [
|
|
130
|
+
{
|
|
131
|
+
"_links": {
|
|
132
|
+
"self": {
|
|
133
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"label": "Eligibility Criteria",
|
|
137
|
+
"number": "5.1",
|
|
138
|
+
"body": "<p>Applications will need to meet the following eligibility criteria:<\/p>",
|
|
139
|
+
"subSections": [
|
|
140
|
+
{
|
|
141
|
+
"_links": {
|
|
142
|
+
"self": {
|
|
143
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1a"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"number": "a.",
|
|
147
|
+
"body": "<p>The research project can be classified as innovative. This includes innovation levels 2 and 3 as described in Annex A.<\/p>"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"_links": {
|
|
151
|
+
"self": {
|
|
152
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"number": "b.",
|
|
156
|
+
"body": "<p>The research project contributes to open source, which includes the following projects:<\/p>",
|
|
157
|
+
"subSections": [
|
|
158
|
+
{
|
|
159
|
+
"_links": {
|
|
160
|
+
"self": {
|
|
161
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b1"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"body": "<p>The product within the research project leads to new open source software artifacts.<\/p>"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"_links": {
|
|
168
|
+
"self": {
|
|
169
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b2"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"body": "<p>The product creates software artifacts which will advance the discussion on open source contribution.<\/p>"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"_links": {
|
|
176
|
+
"self": {
|
|
177
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b3"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"body": "<p>The product within the research project leads to patches for existing open source software artifacts.<\/p>"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"_links": {
|
|
190
|
+
"self": {
|
|
191
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"label": "Innovation levels research grant projects",
|
|
195
|
+
"number": "Annex A.",
|
|
196
|
+
"body": "<p>The following criteria are applied for innovation levels used for research grant applications.<\/p>",
|
|
197
|
+
"subSections": [
|
|
198
|
+
{
|
|
199
|
+
"_links": {
|
|
200
|
+
"self": {
|
|
201
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_1"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"body": "<p>Level 3 innovation is the highest level. It implies that the product radically reinvents the future of certain human activities.<\/p>"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"_links": {
|
|
208
|
+
"self": {
|
|
209
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_2"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"body": "<p>Level 2 innovation is the second highest level. It implies that the product substantially improves products, insights or methods.<\/p>"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"_links": {
|
|
216
|
+
"self": {
|
|
217
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_3"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"body": "<p>Both level 2 and level 3 innovations are excluded by products which are likely to end up collecting dust on a shelf.<\/p>"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"_links": {
|
|
224
|
+
"self": {
|
|
225
|
+
"href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_4"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"body": "<p>Level 1 innovations only require the product to incrementally improves products, insights or methods.<\/p>"
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": {
|
|
3
|
+
"label": "content",
|
|
4
|
+
"resourcetype": "Content",
|
|
5
|
+
"filter": [
|
|
6
|
+
{
|
|
7
|
+
"complete": {
|
|
8
|
+
"type": "choicefilter",
|
|
9
|
+
"label": "complete",
|
|
10
|
+
"layouthint": ["radiobutton"],
|
|
11
|
+
"multiplechoice": false,
|
|
12
|
+
"optionMode": "static",
|
|
13
|
+
"options": [
|
|
14
|
+
{
|
|
15
|
+
"key": "true",
|
|
16
|
+
"label": "Yes"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"key": "false",
|
|
20
|
+
"label": "No"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"searchTerm": {
|
|
27
|
+
"type": "stringfilter",
|
|
28
|
+
"label": "searchTerm",
|
|
29
|
+
"multiplechoice": false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"entryDate": {
|
|
34
|
+
"type": "datefilter",
|
|
35
|
+
"label": "Entry date",
|
|
36
|
+
"format": "dd-MM-yyyy",
|
|
37
|
+
"formatlabel": "dd-mm-yyyy",
|
|
38
|
+
"operator": "greater-than-or-equal"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"metadata": {
|
|
43
|
+
"contentIdentifier": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"label": "content identifier"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"attributes": [
|
|
49
|
+
{
|
|
50
|
+
"label": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"label": "source label"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"_links": {
|
|
57
|
+
"attributes": []
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"sections": {
|
|
62
|
+
"attributes": [
|
|
63
|
+
{
|
|
64
|
+
"_id": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"label": "section identifier"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"label": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"label": "section label"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"number": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"label": "section number"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"body": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"label": "section body"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"categories": {
|
|
92
|
+
"attributes": [
|
|
93
|
+
{
|
|
94
|
+
"_id": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"label": "category identifier"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"label": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"label": "section label"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
}
|