@paris-ias/trees 1.8.56

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.
Files changed (202) hide show
  1. package/LICENSE +679 -0
  2. package/dist/form/action.js +83 -0
  3. package/dist/form/affiliation.js +178 -0
  4. package/dist/form/apps.js +132 -0
  5. package/dist/form/disciplines.js +30 -0
  6. package/dist/form/events.js +836 -0
  7. package/dist/form/fellowships.js +1307 -0
  8. package/dist/form/files.js +30 -0
  9. package/dist/form/mailing.js +43 -0
  10. package/dist/form/news.js +252 -0
  11. package/dist/form/people.js +658 -0
  12. package/dist/form/projects.js +338 -0
  13. package/dist/form/publications.js +364 -0
  14. package/dist/form/tags.js +38 -0
  15. package/dist/form/users.js +576 -0
  16. package/dist/graphql/client/action/query.get.action.gql +22 -0
  17. package/dist/graphql/client/action/query.list.action.gql +32 -0
  18. package/dist/graphql/client/affiliation/query.get.affiliations.gql +37 -0
  19. package/dist/graphql/client/affiliation/query.list.affiliations.gql +43 -0
  20. package/dist/graphql/client/apps/query.get.apps.gql +33 -0
  21. package/dist/graphql/client/apps/query.list.apps.gql +43 -0
  22. package/dist/graphql/client/events/query.get.events.gql +119 -0
  23. package/dist/graphql/client/events/query.list.events.gql +40 -0
  24. package/dist/graphql/client/fellowships/query.get.fellowships.gql +163 -0
  25. package/dist/graphql/client/fellowships/query.list.fellowships.gql +49 -0
  26. package/dist/graphql/client/files/query.get.files.gql +24 -0
  27. package/dist/graphql/client/files/query.list.files.gql +37 -0
  28. package/dist/graphql/client/mailing/query.get.mailing.gql +24 -0
  29. package/dist/graphql/client/mailing/query.list.mailing.gql +23 -0
  30. package/dist/graphql/client/misc/apex.mutations.delete.gql +0 -0
  31. package/dist/graphql/client/misc/apex.mutations.upsert.gql +0 -0
  32. package/dist/graphql/client/misc/apex.queries.login.gql +0 -0
  33. package/dist/graphql/client/misc/query.get.disciplines.gql +17 -0
  34. package/dist/graphql/client/misc/query.get.tags.gql +13 -0
  35. package/dist/graphql/client/misc/query.list.disciplines.gql +23 -0
  36. package/dist/graphql/client/misc/query.list.tags.gql +23 -0
  37. package/dist/graphql/client/news/query.get.news.gql +128 -0
  38. package/dist/graphql/client/news/query.list.news.gql +35 -0
  39. package/dist/graphql/client/people/query.get.people.gql +173 -0
  40. package/dist/graphql/client/people/query.get.users.gql +0 -0
  41. package/dist/graphql/client/people/query.list.people.gql +55 -0
  42. package/dist/graphql/client/people/query.list.users.gql +31 -0
  43. package/dist/graphql/client/projects/query.get.projects.gql +166 -0
  44. package/dist/graphql/client/projects/query.list.projects.gql +33 -0
  45. package/dist/graphql/client/publications/query.get.publications.gql +169 -0
  46. package/dist/graphql/client/publications/query.list.publications.gql +35 -0
  47. package/dist/graphql/schemas/apex-resolvers-list.json +45 -0
  48. package/dist/graphql/schemas/schema.apex.graphql +946 -0
  49. package/dist/graphql/schemas/schema.website.graphql +794 -0
  50. package/dist/graphql/schemas/website-resolvers-list.json +22 -0
  51. package/dist/list/action.js +133 -0
  52. package/dist/list/affiliation.js +133 -0
  53. package/dist/list/apps.js +133 -0
  54. package/dist/list/disciplines.js +132 -0
  55. package/dist/list/events.js +186 -0
  56. package/dist/list/fellowships.js +149 -0
  57. package/dist/list/files.js +132 -0
  58. package/dist/list/mailing.js +132 -0
  59. package/dist/list/news.js +135 -0
  60. package/dist/list/people.js +176 -0
  61. package/dist/list/projects.js +135 -0
  62. package/dist/list/publications.js +152 -0
  63. package/dist/list/tags.js +133 -0
  64. package/dist/list/users.js +176 -0
  65. package/index.ts +63 -0
  66. package/lib/README.md +206 -0
  67. package/lib/buildClientGraphQL.ts +342 -0
  68. package/lib/buildDefaults.ts +0 -0
  69. package/lib/buildSchemas.ts +109 -0
  70. package/lib/generate.ts +505 -0
  71. package/lib/generateAll.ts +231 -0
  72. package/lib/utils.ts +24 -0
  73. package/package.json +34 -0
  74. package/readme.md +116 -0
  75. package/src/LICENSE +661 -0
  76. package/src/action/graphql/client/query.get.action.gql +22 -0
  77. package/src/action/graphql/client/query.list.action.gql +32 -0
  78. package/src/action/graphql/server/apex.types.action.graphql +15 -0
  79. package/src/action/models/action.ts +147 -0
  80. package/src/affiliation/graphql/client/query.get.affiliations.gql +37 -0
  81. package/src/affiliation/graphql/client/query.list.affiliations.gql +43 -0
  82. package/src/affiliation/graphql/server/shared.types.affiliations.graphql +20 -0
  83. package/src/affiliation/models/affiliation.ts +130 -0
  84. package/src/affiliation/models/member.ts +11 -0
  85. package/src/affiliation/models/partner.ts +9 -0
  86. package/src/apps/graphql/client/query.get.apps.gql +33 -0
  87. package/src/apps/graphql/client/query.list.apps.gql +43 -0
  88. package/src/apps/models/apps.ts +195 -0
  89. package/src/events/graphql/client/query.get.events.gql +119 -0
  90. package/src/events/graphql/client/query.list.events.gql +40 -0
  91. package/src/events/graphql/server/shared.inputs.events.graphql +24 -0
  92. package/src/events/models/eventSlot.ts +73 -0
  93. package/src/events/models/events.ts +569 -0
  94. package/src/fellowships/graphql/client/query.get.fellowships.gql +163 -0
  95. package/src/fellowships/graphql/client/query.list.fellowships.gql +49 -0
  96. package/src/fellowships/graphql/server/apex.inputs.fellowshipDetails.graphql +13 -0
  97. package/src/fellowships/graphql/server/shared.types.fellowshipDetails.graphql +13 -0
  98. package/src/fellowships/graphql/server/shared.types.fellowships.graphql +38 -0
  99. package/src/fellowships/models/fellowshipDetails.ts +145 -0
  100. package/src/fellowships/models/fellowships.ts +341 -0
  101. package/src/files/graphql/client/query.get.files.gql +24 -0
  102. package/src/files/graphql/client/query.list.files.gql +37 -0
  103. package/src/files/graphql/server/apex.inputs.files.graphql +7 -0
  104. package/src/files/graphql/server/apex.inputs.video.graphql +9 -0
  105. package/src/files/graphql/server/apex.types.files.graphql +4 -0
  106. package/src/files/graphql/server/shared.inputs.image.graphql +9 -0
  107. package/src/files/graphql/server/shared.types.files.graphql +15 -0
  108. package/src/files/graphql/server/shared.types.image.graphql +9 -0
  109. package/src/files/graphql/server/shared.types.video.graphql +9 -0
  110. package/src/files/models/files.ts +113 -0
  111. package/src/files/models/gallery.ts +11 -0
  112. package/src/files/models/image.ts +159 -0
  113. package/src/files/models/video.ts +166 -0
  114. package/src/form.ts +52 -0
  115. package/src/index.ts +98 -0
  116. package/src/list.ts +34 -0
  117. package/src/mailing/graphql/client/query.get.mailing.gql +24 -0
  118. package/src/mailing/graphql/client/query.list.mailing.gql +23 -0
  119. package/src/mailing/graphql/server/apex.types.mailing.graphql +13 -0
  120. package/src/mailing/models/mailing.ts +123 -0
  121. package/src/misc/graphql/client/apex.mutations.delete.gql +0 -0
  122. package/src/misc/graphql/client/apex.mutations.upsert.gql +0 -0
  123. package/src/misc/graphql/client/apex.queries.login.gql +0 -0
  124. package/src/misc/graphql/client/query.get.disciplines.gql +17 -0
  125. package/src/misc/graphql/client/query.get.tags.gql +13 -0
  126. package/src/misc/graphql/client/query.list.disciplines.gql +23 -0
  127. package/src/misc/graphql/client/query.list.tags.gql +23 -0
  128. package/src/misc/graphql/server/apex.inputs.misc.graphql +13 -0
  129. package/src/misc/graphql/server/apex.inputs.socials.graphql +12 -0
  130. package/src/misc/graphql/server/apex.mutations.graphql +23 -0
  131. package/src/misc/graphql/server/apex.queries.graphql +36 -0
  132. package/src/misc/graphql/server/apex.types.disciplines.graphql +4 -0
  133. package/src/misc/graphql/server/apex.types.tags.graphql +4 -0
  134. package/src/misc/graphql/server/shared.enums.graphql +112 -0
  135. package/src/misc/graphql/server/shared.inputs.misc.graphql +101 -0
  136. package/src/misc/graphql/server/shared.queries.graphql +35 -0
  137. package/src/misc/graphql/server/shared.types.disciplines.graphql +8 -0
  138. package/src/misc/graphql/server/shared.types.events.graphql +39 -0
  139. package/src/misc/graphql/server/shared.types.location.graphql +17 -0
  140. package/src/misc/graphql/server/shared.types.misc.graphql +120 -0
  141. package/src/misc/graphql/server/shared.types.related.graphql +10 -0
  142. package/src/misc/graphql/server/shared.types.relatedAffiliation.graphql +7 -0
  143. package/src/misc/graphql/server/shared.types.relatedEvent.graphql +7 -0
  144. package/src/misc/graphql/server/shared.types.relatedFellowships.graphql +7 -0
  145. package/src/misc/graphql/server/shared.types.relatedNews.graphql +7 -0
  146. package/src/misc/graphql/server/shared.types.relatedPeople.graphql +6 -0
  147. package/src/misc/graphql/server/shared.types.relatedProject.graphql +7 -0
  148. package/src/misc/graphql/server/shared.types.relatedPublications.graphql +6 -0
  149. package/src/misc/graphql/server/shared.types.socials.graphql +22 -0
  150. package/src/misc/graphql/server/shared.types.tags.graphql +11 -0
  151. package/src/misc/graphql/server/website.mutations.graphql +4 -0
  152. package/src/misc/models/disciplines.ts +116 -0
  153. package/src/misc/models/location.ts +136 -0
  154. package/src/misc/models/organizers.ts +13 -0
  155. package/src/misc/models/related.ts +123 -0
  156. package/src/misc/models/relatedEvents.ts +16 -0
  157. package/src/misc/models/relatedFellowships.ts +7 -0
  158. package/src/misc/models/relatedNews.ts +13 -0
  159. package/src/misc/models/relatedPeople.ts +8 -0
  160. package/src/misc/models/relatedProject.ts +14 -0
  161. package/src/misc/models/relatedPublications.ts +14 -0
  162. package/src/misc/models/socials.ts +133 -0
  163. package/src/misc/models/sponsor.ts +13 -0
  164. package/src/misc/models/tags.ts +116 -0
  165. package/src/misc/models/taxonomy.ts +1 -0
  166. package/src/model.ts +7 -0
  167. package/src/news/graphql/client/query.get.news.gql +128 -0
  168. package/src/news/graphql/client/query.list.news.gql +35 -0
  169. package/src/news/graphql/server/share.types.news.graphql +27 -0
  170. package/src/news/models/news.ts +257 -0
  171. package/src/people/graphql/client/query.get.people.gql +173 -0
  172. package/src/people/graphql/client/query.get.users.gql +0 -0
  173. package/src/people/graphql/client/query.list.people.gql +55 -0
  174. package/src/people/graphql/client/query.list.users.gql +31 -0
  175. package/src/people/graphql/server/apex.inputs.consent.graphql +9 -0
  176. package/src/people/graphql/server/apex.inputs.groups.graphql +8 -0
  177. package/src/people/graphql/server/apex.inputs.vintage.graphql +6 -0
  178. package/src/people/graphql/server/shared.types.consent.graphql +9 -0
  179. package/src/people/graphql/server/shared.types.groups.graphql +8 -0
  180. package/src/people/graphql/server/shared.types.people.graphql +29 -0
  181. package/src/people/graphql/server/shared.types.position.graphql +6 -0
  182. package/src/people/graphql/server/shared.types.users.graphql +17 -0
  183. package/src/people/graphql/server/shared.types.vintage.graphql +6 -0
  184. package/src/people/models/consent.ts +82 -0
  185. package/src/people/models/discussants.ts +9 -0
  186. package/src/people/models/experiences.ts +38 -0
  187. package/src/people/models/fellows.ts +12 -0
  188. package/src/people/models/groups.ts +58 -0
  189. package/src/people/models/people.ts +244 -0
  190. package/src/people/models/position.ts +62 -0
  191. package/src/people/models/speakers.ts +9 -0
  192. package/src/people/models/users.ts +252 -0
  193. package/src/people/models/vintage.ts +124 -0
  194. package/src/projects/graphql/client/query.get.projects.gql +166 -0
  195. package/src/projects/graphql/client/query.list.projects.gql +33 -0
  196. package/src/projects/graphql/server/shared.types.projects.graphql +29 -0
  197. package/src/projects/models/projects.ts +249 -0
  198. package/src/publications/graphql/client/query.get.publications.gql +169 -0
  199. package/src/publications/graphql/client/query.list.publications.gql +35 -0
  200. package/src/publications/graphql/server/shared.types.publications.graphql +34 -0
  201. package/src/publications/models/article.ts +262 -0
  202. package/src/publications/models/publications.ts +306 -0
@@ -0,0 +1,133 @@
1
+ import { formType, Form } from "../../form"
2
+
3
+ export interface Socials {
4
+ website?: URL
5
+ wikipedia?: URL
6
+ orcid?: string
7
+ linkedin?: URL
8
+ twitter?: URL
9
+ bluesky?: URL
10
+ instagram?: URL
11
+ scholar?: URL
12
+ researchgate?: URL
13
+ mendeley?: URL
14
+ idRef?: number
15
+ }
16
+
17
+ export interface SocialsForm {
18
+ form: Record<string, Form>
19
+ }
20
+ const defaultConfig: SocialsForm = {
21
+ form: {
22
+ website: {
23
+ label: "website",
24
+ type: formType.Primitive,
25
+ component: "TextField",
26
+ rules: {
27
+ url: true,
28
+ },
29
+ meta: "website", // item type on schema.org
30
+ },
31
+ wikipedia: {
32
+ label: "wikipedia",
33
+ type: formType.Primitive,
34
+ component: "TextField",
35
+ rules: {
36
+ url: true,
37
+ },
38
+ meta: "wikipedia", // item type on schema.org
39
+ },
40
+ orcid: {
41
+ label: "orcid",
42
+ type: formType.Primitive,
43
+ component: "TextField",
44
+ rules: {
45
+ orcid: true,
46
+ },
47
+ meta: "orcid", // item type on schema.org
48
+ },
49
+
50
+ scholar: {
51
+ label: "scholar",
52
+ type: formType.Primitive,
53
+ component: "TextField",
54
+ rules: {
55
+ url: true,
56
+ },
57
+ meta: "scholar", // item type on schema.org
58
+ },
59
+ researchgate: {
60
+ label: "researchgate",
61
+ type: formType.Primitive,
62
+ component: "TextField",
63
+ rules: {
64
+ url: true,
65
+ },
66
+ meta: "researchgate", // item type on schema.org
67
+ },
68
+ mendeley: {
69
+ label: "mendeley",
70
+ type: formType.Primitive,
71
+ component: "TextField",
72
+ rules: {
73
+ url: true,
74
+ },
75
+ meta: "mendeley", // item type on schema.org
76
+ },
77
+ idRef: {
78
+ label: "idRef",
79
+ type: formType.Primitive,
80
+ component: "TextField",
81
+ rules: {
82
+ url: true,
83
+ },
84
+ meta: "idRef", // item type on schema.org
85
+ },
86
+ twitter: {
87
+ label: "twitter",
88
+ type: formType.Primitive,
89
+ component: "TextField",
90
+ rules: {
91
+ url: true,
92
+ },
93
+ meta: "twitter", // item type on schema.org
94
+ },
95
+ linkedin: {
96
+ label: "linkedin",
97
+ type: formType.Primitive,
98
+ component: "TextField",
99
+ rules: {
100
+ url: true,
101
+ },
102
+ meta: "linkedin", // item type on schema.org
103
+ },
104
+ bluesky: {
105
+ label: "bluesky",
106
+ type: formType.Primitive,
107
+ component: "TextField",
108
+ rules: {
109
+ url: true,
110
+ },
111
+ meta: "bluesky", // item type on schema.org
112
+ },
113
+ instagram: {
114
+ label: "instagram",
115
+ type: formType.Primitive,
116
+ component: "TextField",
117
+ rules: {
118
+ url: true,
119
+ },
120
+ meta: "instagram", // item type on schema.org
121
+ },
122
+ youtube: {
123
+ label: "youtube",
124
+ type: formType.Primitive,
125
+ component: "TextField",
126
+ rules: {
127
+ url: true,
128
+ },
129
+ meta: "youtube", // item type on schema.org
130
+ },
131
+ },
132
+ }
133
+ export default defaultConfig
@@ -0,0 +1,13 @@
1
+ import configPeople, { People } from "../../people/models/people"
2
+ import configAffiliation, {
3
+ Affiliation,
4
+ } from "../../affiliation/models/affiliation"
5
+ import Model from "../../model"
6
+
7
+ export interface Sponsor extends People, Affiliation {}
8
+ const defaultConfig: Model = {
9
+ aliases: ["people", "affiliations"],
10
+ ...configPeople,
11
+ ...configAffiliation,
12
+ }
13
+ export default defaultConfig
@@ -0,0 +1,116 @@
1
+ import Model from "../../model"
2
+ import { formType } from "../../form"
3
+
4
+ export interface Tag {
5
+ name: string
6
+ description?: string
7
+ icon?: string
8
+ createdAt?: Date
9
+ updatedAt?: Date
10
+ slug: string
11
+ }
12
+
13
+ const defaultConfig: Model = {
14
+ list: {
15
+ create: true, // allow to create new items
16
+ filters: {
17
+ year: {
18
+ type: "Select",
19
+ items: "",
20
+ },
21
+ },
22
+ sort: {
23
+ // sort options
24
+ nameasc: {
25
+ // by name from a to z
26
+ icon: "sort-alphabetical-ascending",
27
+ text: "by-name-from-a-to-z",
28
+ value: ["article_title", 1],
29
+ },
30
+ namedesc: {
31
+ // by name from z to a
32
+ icon: "sort-alphabetical-descending",
33
+ text: "by-name-from-z-to-a",
34
+ value: ["article_title", -1],
35
+ },
36
+ dateasc: {
37
+ // by date from most recent to oldest
38
+ icon: "sort-calendar-descending",
39
+ text: "by-date-most-recent-first",
40
+ value: ["date", -1],
41
+ default: true,
42
+ },
43
+ datedesc: {
44
+ // by date from oldest to most recent
45
+ icon: "sort-calendar-ascending",
46
+ text: "by-date-oldest-first",
47
+ value: ["date", 1],
48
+ },
49
+ },
50
+ views: {
51
+ rows: {
52
+ name: "rows",
53
+ icon: "view-list",
54
+ perPage: {
55
+ options: [9, 12, 16],
56
+ default: 9,
57
+ },
58
+ },
59
+ dense: {
60
+ default: true,
61
+ name: "dense",
62
+ icon: "land-rows-horizontal",
63
+ perPage: {
64
+ options: [20, 40, 60, 80, 100],
65
+ default: 20,
66
+ },
67
+ },
68
+ tiles: {
69
+ name: "tiles",
70
+ icon: "view-quilt",
71
+ },
72
+ grid: {
73
+ name: "grid",
74
+ icon: "view-day",
75
+ },
76
+ },
77
+ },
78
+ form: {
79
+ name: {
80
+ label: "name",
81
+ component: "TextField",
82
+ type: formType.Primitive,
83
+
84
+ rules: {
85
+ required: true,
86
+ min: 5,
87
+ max: 200,
88
+ },
89
+ meta: "name",
90
+ },
91
+ description: {
92
+ label: "description",
93
+ component: "TextArea",
94
+ type: formType.Primitive,
95
+
96
+ rules: {
97
+ required: true,
98
+ min: 5,
99
+ max: 2000,
100
+ },
101
+ meta: "description",
102
+ },
103
+ icon: {
104
+ label: "icon",
105
+ component: "IconPicker",
106
+ type: formType.Primitive,
107
+ description:
108
+ "Select your icon from material design icons https://pictogrammers.com/library/mdi/",
109
+ meta: "icon",
110
+ /* rules: {
111
+ icon: false, // regex "mdi" TODO
112
+ }, */
113
+ },
114
+ },
115
+ }
116
+ export default defaultConfig
@@ -0,0 +1 @@
1
+ //TODO list + form
package/src/model.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { Form } from "./form"
2
+ import { List } from "./list"
3
+ export default interface Model {
4
+ aliases?: string[]
5
+ list: List
6
+ form?: Record<string, Form>
7
+ }
@@ -0,0 +1,128 @@
1
+ query getNews($appId: ID = "iea", $itemId: ID = "", $lang: String = "en") {
2
+ getNews(appId: $appId, itemId: $itemId, lang: $lang) {
3
+ category
4
+ color
5
+ date
6
+ description
7
+ featured
8
+ slug {
9
+ fr
10
+ en
11
+ }
12
+ files {
13
+ createdAt
14
+ file
15
+ fileType
16
+ hash
17
+ slug
18
+ image {
19
+ alt
20
+ caption
21
+ backgroundColor
22
+ copyright
23
+ license
24
+ licenseUrl
25
+ url
26
+ }
27
+ name
28
+ path
29
+ size
30
+ thumb
31
+ updatedAt
32
+ url
33
+ }
34
+ gallery {
35
+ alt
36
+ backgroundColor
37
+ caption
38
+ copyright
39
+ license
40
+ licenseUrl
41
+ url
42
+ }
43
+ image {
44
+ alt
45
+ backgroundColor
46
+ caption
47
+ copyright
48
+ license
49
+ licenseUrl
50
+ url
51
+ }
52
+ tags {
53
+ createdAt
54
+ description
55
+ icon
56
+ name
57
+ updatedAt
58
+ }
59
+ name
60
+ url
61
+ appId
62
+ related {
63
+ events {
64
+ description
65
+ image {
66
+ alt
67
+ backgroundColor
68
+ caption
69
+ copyright
70
+ license
71
+ licenseUrl
72
+ url
73
+ }
74
+ name
75
+ url
76
+ }
77
+ news {
78
+ description
79
+ id
80
+ image {
81
+ alt
82
+ backgroundColor
83
+ caption
84
+ copyright
85
+ license
86
+ licenseUrl
87
+ url
88
+ }
89
+ name
90
+ url
91
+ }
92
+ people {
93
+ firstname
94
+ id
95
+ image {
96
+ alt
97
+ backgroundColor
98
+ caption
99
+ copyright
100
+ license
101
+ licenseUrl
102
+ url
103
+ }
104
+ lastname
105
+ }
106
+ projects {
107
+ description
108
+ id
109
+ name
110
+ image {
111
+ alt
112
+ backgroundColor
113
+ caption
114
+ copyright
115
+ license
116
+ licenseUrl
117
+ url
118
+ }
119
+ url
120
+ }
121
+ publications {
122
+ id
123
+ name
124
+ url
125
+ }
126
+ }
127
+ }
128
+ }
@@ -0,0 +1,35 @@
1
+ query listNews(
2
+ $appId: ID = "iea"
3
+ $lang: String = "en"
4
+ $options: ListInput = {}
5
+ ) {
6
+ listNews(options: $options, appId: $appId, lang: $lang) {
7
+ total
8
+ items {
9
+ slug
10
+ category
11
+ color
12
+ date
13
+ description
14
+ featured
15
+ image {
16
+ alt
17
+ backgroundColor
18
+ caption
19
+ copyright
20
+ license
21
+ licenseUrl
22
+ url
23
+ }
24
+ tags {
25
+ createdAt
26
+ description
27
+ icon
28
+ name
29
+ updatedAt
30
+ }
31
+ name
32
+ url
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,27 @@
1
+ type News {
2
+ appId: String
3
+ name: String!
4
+ category: newsCategories
5
+ description: String
6
+ tags: [Tag]
7
+ image: Image
8
+ gallery: [Image]
9
+ summary: String
10
+ color: String
11
+ url: AWSURL
12
+ date: AWSDateTime
13
+ featured: AWSDateTime
14
+ related: Related
15
+ files: [File]
16
+ slug: AWSJSON
17
+ }
18
+
19
+ type NewsFilters {
20
+ tags: [String!]
21
+ category: [newsCategories!]
22
+ }
23
+
24
+ type NewsList {
25
+ total: Int!
26
+ items: [News]
27
+ }
@@ -0,0 +1,257 @@
1
+ import { Image } from "../../files/models/image"
2
+ import Model from "../../model"
3
+ import { RelatedPeople } from "../../misc/models/relatedPeople"
4
+ import { Related } from "../../misc/models/related"
5
+ import { Tag } from "../../misc/models/tags"
6
+ import { formType } from "../../form"
7
+ import { Files } from "../../files/models/files"
8
+
9
+ export interface News {
10
+ name: string
11
+ authors: [RelatedPeople]
12
+ category?: newsCategories
13
+ description?: string
14
+ summary?: string
15
+ subtitle?: string
16
+ tags?: Tag[]
17
+ image?: Image
18
+ gallery?: Image[]
19
+ color?: string
20
+ url?: URL
21
+ date?: Date
22
+ featured?: Date
23
+ related?: Related[]
24
+ files?: Files
25
+ }
26
+ export enum newsCategories {
27
+ PressRelease = "PRESS_RELEASE",
28
+ Interview = "INTERVIEW",
29
+ Article = "ARTICLE",
30
+ Opinion = "OPINION",
31
+ Report = "REPORT",
32
+ Blog = "BLOG",
33
+ LifeAtTheInstitute = "LIFE_AT_THE_INSTITUTE",
34
+ Event = "EVENT",
35
+ Announcement = "ANNOUNCEMENT",
36
+ Job = "JOB",
37
+ Fellowship = "FELLOWSHIP",
38
+ Grant = "GRANT",
39
+ Award = "AWARD",
40
+ Project = "PROJECT",
41
+ Tool = "TOOL",
42
+ Software = "SOFTWARE",
43
+ Data = "DATA",
44
+ Publication = "PUBLICATION",
45
+ Video = "VIDEO",
46
+ Audio = "AUDIO",
47
+ }
48
+ const defaultConfig: Model = {
49
+ source: "gql",
50
+ type: "", // 'directory' | 'file'
51
+ list: {
52
+ create: true, // allow to create new items
53
+ filters: {
54
+ tags: {
55
+ type: "AutoComplete",
56
+ multiple: true,
57
+ },
58
+ category: {
59
+ type: "Select",
60
+ multiple: true,
61
+ items: newsCategories,
62
+ },
63
+ },
64
+ sort: {
65
+ dateasc: {
66
+ // by date from most recent to oldest
67
+ icon: "sort-calendar-descending",
68
+ text: "by-date-most-recent-first",
69
+ value: ["date", -1],
70
+ default: true,
71
+ },
72
+ datedesc: {
73
+ // by date from oldest to most recent
74
+ icon: "sort-calendar-ascending",
75
+ text: "by-date-oldest-first",
76
+ value: ["date", 1],
77
+ },
78
+ },
79
+ views: {
80
+ rows: {
81
+ name: "rows",
82
+ icon: "view-list",
83
+ perPage: {
84
+ options: [9, 12, 16],
85
+ default: 9,
86
+ },
87
+ },
88
+ dense: {
89
+ default: true,
90
+ name: "dense",
91
+ icon: "land-rows-horizontal",
92
+ perPage: {
93
+ options: [20, 40, 60, 80, 100],
94
+ default: 20,
95
+ },
96
+ } /*
97
+ expanded: {
98
+ name: "expanded",
99
+ icon: "arrow-expand-vertical",
100
+ }, */,
101
+ },
102
+ },
103
+ form: {
104
+ name: {
105
+ label: "name",
106
+ component: "TextField",
107
+ type: formType.Primitive,
108
+ i18n: true,
109
+ rules: {
110
+ required: true,
111
+ min: 5,
112
+ max: 200,
113
+ },
114
+ meta: "name", // item type on schema.org
115
+ },
116
+ summary: {
117
+ label: "summary",
118
+ component: "TextArea",
119
+ type: formType.Primitive,
120
+ i18n: true,
121
+ rules: {
122
+ required: true,
123
+ min: 5,
124
+ max: 200,
125
+ },
126
+ meta: "summary", // item type on schema.org
127
+ },
128
+ subtitle: {
129
+ label: "subtitle",
130
+ component: "TextField",
131
+ type: formType.Primitive,
132
+ i18n: true,
133
+ rules: {
134
+ required: true,
135
+ min: 5,
136
+ max: 200,
137
+ },
138
+ meta: "subtitle", // item type on schema.org
139
+ },
140
+ description: {
141
+ label: "description",
142
+ component: "TextArea",
143
+ i18n: true,
144
+ type: formType.Primitive,
145
+
146
+ rules: {
147
+ required: true,
148
+ min: 5,
149
+ max: 200,
150
+ },
151
+ meta: "description",
152
+ },
153
+ image: {
154
+ label: "image",
155
+ component: "ImagePicker",
156
+ type: formType.Document,
157
+
158
+ rules: {
159
+ required: true,
160
+ },
161
+ meta: "image",
162
+ },
163
+ color: {
164
+ label: "color",
165
+ component: "ColorPicker",
166
+ type: formType.Primitive,
167
+
168
+ rules: {
169
+ required: true,
170
+ color: true,
171
+ },
172
+ meta: "color",
173
+ },
174
+ url: {
175
+ label: "url",
176
+ component: "TextField",
177
+ type: formType.Primitive,
178
+
179
+ rules: {
180
+ required: true,
181
+ url: true,
182
+ },
183
+ meta: "url",
184
+ },
185
+ files: {
186
+ label: "files",
187
+ component: "FilePicker",
188
+ type: formType.Document,
189
+
190
+ rules: {
191
+ required: true,
192
+ },
193
+ meta: "files",
194
+ },
195
+ gallery: {
196
+ label: "gallery",
197
+ component: "ImagePicker",
198
+ type: formType.Document,
199
+ multiple: true,
200
+ meta: "gallery",
201
+ },
202
+ date: {
203
+ label: "date",
204
+ component: "DatePicker",
205
+ type: formType.Primitive,
206
+
207
+ rules: {
208
+ required: true,
209
+ date: true,
210
+ },
211
+ meta: "date",
212
+ },
213
+ featured: {
214
+ label: "featured",
215
+ component: "DatePicker",
216
+ type: formType.Primitive,
217
+ rules: {
218
+ required: true,
219
+ date: true,
220
+ },
221
+ meta: "featured",
222
+ },
223
+ tags: {
224
+ label: "tags",
225
+ component: "TagPicker",
226
+ type: formType.Document,
227
+ rules: {
228
+ required: true,
229
+ min: 1,
230
+ },
231
+ meta: "tags",
232
+ },
233
+ related: {
234
+ label: "related",
235
+ component: "ObjectContainerPanel",
236
+ type: formType.Template,
237
+ rules: {
238
+ required: true,
239
+ min: 5,
240
+ max: 200,
241
+ },
242
+ meta: "related",
243
+ },
244
+ category: {
245
+ label: "category",
246
+ component: "Select",
247
+ type: formType.Primitive,
248
+ rules: {
249
+ required: true,
250
+ },
251
+ items: newsCategories,
252
+ meta: "category", // item type on schema.org
253
+ },
254
+ },
255
+ }
256
+
257
+ export default defaultConfig