Skip to content

Commit ae7b4d2

Browse files
committed
Add some fields support
1 parent 82507db commit ae7b4d2

File tree

3 files changed

+127
-0
lines changed

3 files changed

+127
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {IAuthoringFieldV2, IDropdownConfigManualSource} from 'superdesk-api';
2+
import {planningApi, superdeskApi} from '../../../superdeskApi';
3+
import {getVocabularyItemFieldTranslated} from '../../../utils/vocabularies';
4+
import {calendars} from '../../../selectors/events';
5+
6+
export const getCalendarsField = () => {
7+
const vocabularyFromStore = calendars(planningApi.redux.store.getState());
8+
9+
return {
10+
fieldId: 'calendars',
11+
getField: ({required, id}) => {
12+
const options = vocabularyFromStore.map(
13+
(option) => ({
14+
id: option.qcode,
15+
label: getVocabularyItemFieldTranslated(
16+
option,
17+
'label',
18+
'en',
19+
'name'
20+
),
21+
})
22+
);
23+
24+
const fieldConfig: IDropdownConfigManualSource = {
25+
source: 'manual-entry',
26+
options: options,
27+
type: 'text',
28+
roundCorners: false,
29+
multiple: true,
30+
required: required,
31+
};
32+
33+
const field: IAuthoringFieldV2 = {
34+
id: id,
35+
name: superdeskApi.localization.gettext('Calendars'),
36+
fieldType: 'dropdown',
37+
fieldConfig: fieldConfig,
38+
};
39+
40+
return field;
41+
},
42+
storageAdapterEvent: {
43+
storeValue: (item, operationalValue: Array<string>) => {
44+
return {
45+
...item,
46+
calendars: vocabularyFromStore.filter((x) => operationalValue.includes(x.qcode)),
47+
};
48+
},
49+
retrieveStoredValue: (item) => item.calendars.map((x) => x.qcode),
50+
}
51+
};
52+
};

client/components/editor-standalone/field-definitions/index.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ import {getPriorityField} from './priority-field';
1818
import {getLocationsField} from './locations-field';
1919
import {getLinksField} from './link-field';
2020
import {getContactsField} from './contacts';
21+
import {getOccurStatusField} from './occurence-status';
22+
import {getLanguageField} from './lanugage';
23+
import {getCalendarsField} from './calendars';
2124

2225
export function getFieldDefinitions(profileType: 'event' | 'planning'): IFieldDefinitions {
2326
const {gettext} = superdeskApi.localization;
27+
2428
const result: Array<IFieldDefinition> = [
2529
{
2630
fieldId: 'ednote',
@@ -65,6 +69,34 @@ export function getFieldDefinitions(profileType: 'event' | 'planning'): IFieldDe
6569
return field;
6670
},
6771
},
72+
{
73+
fieldId: 'references',
74+
getField: ({required, id}) =>
75+
getTextFieldConfig({id: id, label: gettext('External Reference'), required: required}),
76+
},
77+
{
78+
fieldId: 'definition_short',
79+
getField: ({required, id}) =>
80+
getTextFieldConfig({id: id, label: gettext('Description'), required: required}),
81+
},
82+
{
83+
fieldId: 'invitation_details',
84+
getField: ({required, id}) =>
85+
getTextFieldConfig({id: id, label: gettext('Invitation Details'), required: required}),
86+
},
87+
{
88+
fieldId: 'accreditation_info',
89+
getField: ({required, id}) =>
90+
getTextFieldConfig({id: id, label: gettext('Accreditation Info'), required: required}),
91+
},
92+
{
93+
fieldId: 'registration_details',
94+
getField: ({required, id}) =>
95+
getTextFieldConfig({id: id, label: gettext('Registration Details'), required: required}),
96+
},
97+
getCalendarsField(),
98+
getLanguageField(),
99+
getOccurStatusField(),
68100
getPlanningDate(),
69101
getPlaceField(),
70102
getAgendasField(),
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import {IAuthoringFieldV2, IDropdownConfigManualSource} from 'superdesk-api';
2+
import {planningApi, superdeskApi} from '../../../superdeskApi';
3+
import {getLanguages} from '../../../selectors/vocabs';
4+
import {getVocabularyItemFieldTranslated} from '../../../utils/vocabularies';
5+
6+
export const getLanguageField = () => {
7+
const vocabularyFromStore = getLanguages(planningApi.redux.store.getState());
8+
9+
return {
10+
fieldId: 'language',
11+
getField: ({required, id}) => {
12+
const options = vocabularyFromStore.map(
13+
(option) => ({
14+
id: option.qcode,
15+
label: getVocabularyItemFieldTranslated(
16+
option,
17+
'label',
18+
'en',
19+
'name'
20+
),
21+
})
22+
);
23+
24+
const fieldConfig: IDropdownConfigManualSource = {
25+
source: 'manual-entry',
26+
options: options,
27+
type: 'text',
28+
roundCorners: false,
29+
multiple: false,
30+
required: required,
31+
};
32+
33+
const field: IAuthoringFieldV2 = {
34+
id: id,
35+
name: superdeskApi.localization.gettext('Language'),
36+
fieldType: 'dropdown',
37+
fieldConfig: fieldConfig,
38+
};
39+
40+
return field;
41+
},
42+
};
43+
};

0 commit comments

Comments
 (0)