Skip to content

Commit 39bd57e

Browse files
Hieu Lam - TMAcweitatntthitrinh
authored
feature-8950: Make form fields editable after order (#8975)
* feature-8950: Make form fields editable after order * feature-8950: Make form fields editable after order * feature-8950: Make form fields editable after order * feature-8950: Make form fields editable after order --------- Co-authored-by: cweitat <[email protected]> Co-authored-by: ntthitrinh <[email protected]>
1 parent 5bf2fe5 commit 39bd57e

File tree

15 files changed

+1155
-279
lines changed

15 files changed

+1155
-279
lines changed

app/components/forms/orders/attendee-list.js

Lines changed: 84 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@ import { action, computed } from '@ember/object';
44
import { groupBy, orderBy } from 'lodash-es';
55
import { or } from '@ember/object/computed';
66
import { tracked } from '@glimmer/tracking';
7-
import { languageForms1 } from 'open-event-frontend/utils/dictionary/language-form-1';
8-
import { languageForms2 } from 'open-event-frontend/utils/dictionary/language-form-2';
7+
import { nativeLanguage } from 'open-event-frontend/utils/dictionary/native-language';
8+
import { fluentLanguage } from 'open-event-frontend/utils/dictionary/fluent-language';
9+
import { genders } from 'open-event-frontend/utils/dictionary/genders';
10+
import { ageGroups } from 'open-event-frontend/utils/dictionary/age-groups';
11+
import { countries } from 'open-event-frontend/utils/dictionary/demography';
12+
import { homeWikis } from 'open-event-frontend/utils/dictionary/home-wikis';
13+
import { booleanComplex } from 'open-event-frontend/utils/dictionary/boolean_complex';
14+
import { wikiScholarship } from 'open-event-frontend/utils/dictionary/wiki-scholarship';
915

1016
@classic
1117
export default class AttendeeList extends Component {
@@ -17,20 +23,24 @@ export default class AttendeeList extends Component {
1723
return this.data.user;
1824
}
1925

26+
@tracked nativeLanguage = nativeLanguage;
27+
@tracked fluentLanguage = fluentLanguage;
28+
@tracked genders = genders;
29+
2030
@computed('data.attendees')
2131
get holders() {
2232
this.data.attendees.forEach(attendee => {
2333
if (attendee.native_language) {
24-
this.languageFormMapCodeToName(attendee, 'native_language', languageForms1);
34+
this.languageFormMapCodeToName(attendee, 'native_language', this.nativeLanguage);
2535
}
2636
if (attendee.fluent_language) {
27-
this.languageFormMapCodeToName(attendee, 'fluent_language', languageForms2);
37+
this.languageFormMapCodeToName(attendee, 'fluent_language', this.fluentLanguage);
2838
}
2939
if (attendee.language_form_1) {
30-
this.languageFormMapCodeToName(attendee, 'language_form_1', languageForms1);
40+
this.languageFormMapCodeToName(attendee, 'language_form_1', this.nativeLanguage);
3141
}
3242
if (attendee.language_form_2) {
33-
this.languageFormMapCodeToName(attendee, 'language_form_2', languageForms2);
43+
this.languageFormMapCodeToName(attendee, 'language_form_2', this.fluentLanguage);
3444
}
3545
if (attendee.gender) {
3646
this.genderAddSpaces(attendee);
@@ -45,15 +55,66 @@ export default class AttendeeList extends Component {
4555
possibleLanguages.forEach(languageForm => {
4656
languageFormList.forEach(item => {
4757
if (item === languageForm.code) {
58+
languageForm.isChecked = true;
4859
languageFormMap.push(languageForm.name);
4960
}
5061
});
5162
});
5263
return attendee.set(key.concat('_name_mapping'), languageFormMap.map(select => select).join(', '));
5364
}
5465

66+
@computed('genders')
67+
get genders() {
68+
return orderBy(this.genders, 'position');
69+
}
70+
71+
@computed('ageGroups')
72+
get ageGroups() {
73+
return orderBy(ageGroups, 'position');
74+
}
75+
76+
@computed('countries')
77+
get countries() {
78+
return orderBy(countries, 'name');
79+
}
80+
81+
@computed('nativeLanguage')
82+
get nativeLanguage() {
83+
return orderBy(this.nativeLanguage, 'position');
84+
}
85+
86+
@computed('fluentLanguage')
87+
get fluentLanguage() {
88+
return orderBy(this.fluentLanguage, 'position');
89+
}
90+
91+
@computed('homeWikis')
92+
get homeWikis() {
93+
return orderBy(homeWikis, 'item');
94+
}
95+
96+
@computed('wikiScholarship')
97+
get wikiScholarship() {
98+
return orderBy(wikiScholarship, 'position');
99+
}
100+
101+
@computed('booleanComplex')
102+
get booleanComplex() {
103+
return orderBy(booleanComplex, 'position');
104+
}
105+
55106
genderAddSpaces(attendee) {
56-
return attendee.set('gender'.concat('_name_mapping'), attendee.gender.split(',').join(', '));
107+
const listMap = [];
108+
const genderList = attendee.gender.split(',');
109+
this.genders.forEach(gender => {
110+
genderList.forEach(item => {
111+
if (item === gender.code || item === gender.name) {
112+
gender.isChecked = true;
113+
listMap.push(gender.name);
114+
}
115+
});
116+
});
117+
return attendee.set('gender'.concat('_name_mapping'), listMap.join(', '));
57118
}
58119

59120
@or('event.isBillingInfoMandatory', 'data.isBillingEnabled')
@@ -64,12 +125,14 @@ export default class AttendeeList extends Component {
64125
const current_locale = this.cookies.read('current_locale');
65126
const customFields = orderBy(this.fields.toArray()?.map(field => {
66127
const { main_language } = field;
128+
field.nameConvert = field.name;
129+
if (field.name === 'Consent of refund policy') {
130+
field.nameConvert = 'I agree to the terms of the refund policy of the event.';
131+
}
67132
if ((main_language && main_language.split('-')[0] === current_locale) || !field.translations || !field.translations.length) {
68133
field.transName = field.name;
69134
} else if (field.translations?.length) {
70-
71135
const transName = field.translations.filter(trans => trans.language_code.split('-')[0] === current_locale);
72-
73136
if (transName.length) {
74137
field.transName = transName[0].name;
75138
} else {
@@ -90,9 +153,9 @@ export default class AttendeeList extends Component {
90153
}
91154

92155
@action
93-
async saveHolder(holder) {
156+
async saveHolder() {
94157
try {
95-
await holder.save();
158+
await this.holders.forEach(holder => holder.save());
96159
await this.data.save();
97160
} catch (error) {
98161
console.warn(error);
@@ -125,4 +188,14 @@ export default class AttendeeList extends Component {
125188
console.warn(error);
126189
}
127190
}
191+
192+
@action
193+
updateLanguageFormsSelection(checked, changed, selectedOptions, holder, field) {
194+
holder.set(field.fieldIdentifier, selectedOptions.map(select => select.value).join(','));
195+
}
196+
197+
@action
198+
updateGendersSelection(checked, changed, selectedOptions, holder, field) {
199+
holder.set(field.fieldIdentifier, selectedOptions.map(select => select.value).join(','));
200+
}
128201
}

0 commit comments

Comments
 (0)