Skip to content

Commit 52a23df

Browse files
Hieu Lam - TMAmariobehlingkhangon
authored
feature-8845: Languages missing from language dropdown (#8865)
* feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown * feature-8845: Languages missing from language dropdown --------- Co-authored-by: Mario Behling <[email protected]> Co-authored-by: Khang On - TMA <[email protected]>
1 parent 8bd9099 commit 52a23df

File tree

6 files changed

+150
-39
lines changed

6 files changed

+150
-39
lines changed

app/components/forms/wizard/custom-form-input-translation.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Component from '@glimmer/component';
2-
import { action } from '@ember/object';
2+
import { action, computed } from '@ember/object';
33

44
interface Args {
55
onChange: ((code: string, value: string) => void) | null,
@@ -14,6 +14,8 @@ interface SubForm {
1414

1515
export default class CustomFormInputTranslation extends Component<Args> {
1616
self = this
17+
18+
@computed('args.data.ignoreLanguages.@each')
1719
get languageList(): object[] {
1820
const { languages, ignoreLanguages, selectedLang } = this.args.data;
1921
return languages.filter((item: SubForm) =>

app/components/forms/wizard/custom-form-input.ts

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { action, computed } from '@ember/object';
44
import { inject as service } from '@ember/service';
55
import DS from 'ember-data';
66
import { tracked } from '@glimmer/tracking';
7-
import { languageForms } from 'open-event-frontend/utils/dictionary/language-form';
7+
import { translateLanguages } from 'open-event-frontend/utils/dictionary/translate-language';
88
import { A } from '@ember/array';
99

1010
interface CustomForm {
@@ -53,7 +53,7 @@ interface Args {
5353
form: string,
5454
event: any,
5555
formIdentifier: string | '',
56-
mainLanguage: string | 'en-US',
56+
mainLanguage: string | 'en',
5757
min: number | 0,
5858
max: number | 10,
5959
onSave: (() => void) | null
@@ -76,7 +76,7 @@ export default class CustomFormInput extends Component<Args> {
7676
max = 10;
7777

7878
@tracked
79-
mainLanguage = 'en-US'
79+
mainLanguage = 'en'
8080

8181
@tracked
8282
selectedLanguage:string[] = [this.mainLanguage]
@@ -96,23 +96,29 @@ export default class CustomFormInput extends Component<Args> {
9696
this.max = this.args.field.max;
9797
this.mainLanguage = this.args.field.mainLanguage;
9898
this.translations = this.args.field.translations;
99+
this.selectedLanguage.clear();
100+
this.selectedLanguage.pushObject(this.mainLanguage)
101+
const selectedLanguage = this.translations?.map(trans => trans.code || trans.language_code);
102+
this.selectedLanguage.pushObjects(selectedLanguage)
99103
this.translations?.forEach((trans: Translate) => {
100104
const { name, code, language_code, form_id, isDeleted, id } = trans;
101-
this.subForm.pushObject({
102-
id,
103-
form_id,
104-
name,
105-
languages : languageForms,
106-
ignoreLanguages : this.selectedLanguage,
107-
selectedLang : code || language_code,
108-
isDeleted
109-
})
105+
if (isDeleted || (name && (code || language_code))) {
106+
this.subForm.pushObject({
107+
id,
108+
form_id,
109+
name,
110+
languages : translateLanguages,
111+
ignoreLanguages : this.selectedLanguage,
112+
selectedLang : code || language_code,
113+
isDeleted
114+
})
115+
}
110116
})
111117
} else {
112118
this.name = '';
113119
this.min = 0;
114120
this.max = 10;
115-
this.mainLanguage = 'en-US';
121+
this.mainLanguage = 'en';
116122
}
117123
}
118124

@@ -121,13 +127,15 @@ export default class CustomFormInput extends Component<Args> {
121127
return getIdentifier(this.name, this.args.customForms);
122128
}
123129

124-
@computed('name')
130+
@computed('name', 'selectedLanguage.@each', '[email protected]')
125131
get validIdentifier(): boolean {
126-
return this.identifier.trim().length > 0 && this.name.trim().length > 0;
132+
const nameValid = this.identifier.trim().length > 0 && this.name.trim().length > 0;
133+
const transInValid = this.subForm.filter(field => !field.isDeleted && (!field.name || !field.selectedLang))
134+
return nameValid && !transInValid?.length;
127135
}
128136

129137
get languageList(): object[] {
130-
return languageForms.filter(language =>
138+
return translateLanguages.filter(language =>
131139
language.code === this.mainLanguage || !this.selectedLanguage.includes(language.code)
132140
)
133141
}
@@ -136,15 +144,17 @@ export default class CustomFormInput extends Component<Args> {
136144
get translationsList(): Translate[] {
137145
const translations: Translate[] = []
138146
this.subForm.forEach(field => {
139-
const { id, form_id, name, isDeleted } = field
140-
translations.pushObject({
141-
id,
142-
form_id,
143-
name,
144-
code : field.selectedLang,
145-
language_code : field.selectedLang,
146-
isDeleted
147-
})
147+
const { id, form_id, name, isDeleted, selectedLang } = field
148+
if (isDeleted || (name && selectedLang)) {
149+
translations.pushObject({
150+
id,
151+
form_id,
152+
name,
153+
code : selectedLang,
154+
language_code : selectedLang,
155+
isDeleted
156+
})
157+
}
148158
})
149159
return translations;
150160
}
@@ -164,7 +174,7 @@ export default class CustomFormInput extends Component<Args> {
164174
min : this.min,
165175
max : this.max,
166176
translations : this.translationsList,
167-
mainLanguage : this.mainLanguage || 'en-US'
177+
mainLanguage : this.mainLanguage || 'en'
168178
});
169179
}
170180

@@ -189,7 +199,7 @@ export default class CustomFormInput extends Component<Args> {
189199
this.max = 10;
190200
this.subForm.clear();
191201
this.selectedLanguage.clear();
192-
this.mainLanguage = 'en-US'
202+
this.mainLanguage = 'en'
193203
this.selectedLanguage.pushObject(this.mainLanguage);
194204
this.args.onSave && this.args.onSave();
195205
}
@@ -198,7 +208,7 @@ export default class CustomFormInput extends Component<Args> {
198208
addTranslation():void {
199209
const obj: any = {
200210
name : '',
201-
languages : languageForms,
211+
languages : translateLanguages,
202212
ignoreLanguages : this.selectedLanguage,
203213
selectedLang : '',
204214
isDeleted : false
@@ -229,7 +239,7 @@ export default class CustomFormInput extends Component<Args> {
229239

230240
@computed('[email protected]')
231241
get disableAddTranslation() {
232-
return this.subForm.filter(item => !item.isDeleted).length === languageForms.length - 1;
242+
return this.subForm.filter(item => !item.isDeleted).length === translateLanguages.length - 1;
233243
}
234244

235245
@computed('[email protected]')

app/components/forms/wizard/custom-forms/table.hbs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,16 @@
6262
{{/if}}
6363
</div>
6464
{{#each field.translations as |translation|}}
65-
<div>
66-
{{concat translation.name " - " translation.language_code}}
67-
<div class="ui icon d-inline" data-tooltip="Custom Field" style="visibility: hidden">
68-
<i class="info icon"></i>
69-
</div>
70-
</div>
65+
{{#unless translation.isDeleted}}
66+
{{#if (and translation.name translation.language_code )}}
67+
<div>
68+
{{concat translation.name " - " translation.language_code}}
69+
<div class="ui icon d-inline" data-tooltip="Custom Field" style="visibility: hidden">
70+
<i class="info icon"></i>
71+
</div>
72+
</div>
73+
{{/if}}
74+
{{/unless}}
7175
{{/each}}
7276
{{else}}
7377
{{#if (eq field.fieldIdentifier 'is_consent_form_field')}}

app/models/custom-form.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export default ModelBase.extend({
7373
min : attr('number', { defaultValue: 0 }),
7474
max : attr('number', { defaultValue: 10 }),
7575
translations : attr(),
76-
mainLanguage : attr('string', { defaultValue: 'en-US' }),
76+
mainLanguage : attr('string', { defaultValue: 'en' }),
7777

7878
event : belongsTo('event'),
7979
customFormOptions : hasMany('customFormOptions'),

app/services/l10n.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default class L10nService extends L10n {
1515

1616
@computed(function() {
1717
return {
18+
'ar' : 'عربي',
1819
'bn' : 'বাংলা',
1920
'de' : 'Deutsch',
2021
'en' : 'English',
@@ -23,13 +24,15 @@ export default class L10nService extends L10n {
2324
'hi' : 'हिंदी',
2425
'id' : 'Bahasa Indonesia',
2526
'ja' : '日本語',
27+
'ko' : '한국어',
28+
'nb_NO' : 'Norsk bokmål',
2629
'pl' : 'Polski',
2730
'ru' : 'Русский',
31+
'sv' : 'Svenska',
2832
'th' : 'ไทย',
2933
'vi' : 'Tiếng Việt',
3034
'zh_Hans' : '中文(简体)',
31-
'zh_Hant' : '中文(繁體)',
32-
'ko' : '한국어'
35+
'zh_Hant' : '中文(繁體)'
3336
};
3437
})
3538
availableLocales;
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
export const translateLanguages = [
2+
{
3+
name : 'عربي',
4+
code : 'ar',
5+
isChecked : false
6+
},
7+
{
8+
name : 'বাংলা',
9+
code : 'bn',
10+
isChecked : false
11+
},
12+
{
13+
name : 'Deutsch',
14+
code : 'de',
15+
isChecked : false
16+
},
17+
{
18+
name : 'English',
19+
code : 'en',
20+
isChecked : false
21+
},
22+
{
23+
name : 'Español',
24+
code : 'es',
25+
isChecked : false
26+
},
27+
{
28+
name : 'Français',
29+
code : 'fr',
30+
isChecked : false
31+
},
32+
{
33+
name : 'हिंदी',
34+
code : 'hi',
35+
isChecked : false
36+
},
37+
{
38+
name : 'Bahasa Indonesia',
39+
code : 'id',
40+
isChecked : false
41+
},
42+
{
43+
name : '日本語',
44+
code : 'ja',
45+
isChecked : false
46+
},
47+
{
48+
name : '한국어',
49+
code : 'ko',
50+
isChecked : false
51+
},
52+
{
53+
name : 'Bokmål',
54+
code : 'nb_NO',
55+
isChecked : false
56+
},
57+
{
58+
name : 'Polski',
59+
code : 'pl',
60+
isChecked : false
61+
},
62+
{
63+
name : 'Русский',
64+
code : 'ru',
65+
isChecked : false
66+
},
67+
{
68+
name : 'Svenska',
69+
code : 'sv',
70+
isChecked : false
71+
},
72+
{
73+
name : 'ไทย',
74+
code : 'th',
75+
isChecked : false
76+
},
77+
{
78+
name : 'Tiếng Việt',
79+
code : 'vi',
80+
isChecked : false
81+
},
82+
{
83+
name : '中文(简体)',
84+
code : 'zh_Hans',
85+
isChecked : false
86+
},
87+
{
88+
name : '中文(繁體)',
89+
code : 'zh_Hant',
90+
isChecked : false
91+
}
92+
];

0 commit comments

Comments
 (0)