@@ -4,7 +4,7 @@ import { action, computed } from '@ember/object';
4
4
import { inject as service } from '@ember/service' ;
5
5
import DS from 'ember-data' ;
6
6
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 ' ;
8
8
import { A } from '@ember/array' ;
9
9
10
10
interface CustomForm {
@@ -53,7 +53,7 @@ interface Args {
53
53
form : string ,
54
54
event : any ,
55
55
formIdentifier : string | '' ,
56
- mainLanguage : string | 'en-US ' ,
56
+ mainLanguage : string | 'en' ,
57
57
min : number | 0 ,
58
58
max : number | 10 ,
59
59
onSave : ( ( ) => void ) | null
@@ -76,7 +76,7 @@ export default class CustomFormInput extends Component<Args> {
76
76
max = 10 ;
77
77
78
78
@tracked
79
- mainLanguage = 'en-US '
79
+ mainLanguage = 'en'
80
80
81
81
@tracked
82
82
selectedLanguage :string [ ] = [ this . mainLanguage ]
@@ -96,23 +96,29 @@ export default class CustomFormInput extends Component<Args> {
96
96
this . max = this . args . field . max ;
97
97
this . mainLanguage = this . args . field . mainLanguage ;
98
98
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 )
99
103
this . translations ?. forEach ( ( trans : Translate ) => {
100
104
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
+ }
110
116
} )
111
117
} else {
112
118
this . name = '' ;
113
119
this . min = 0 ;
114
120
this . max = 10 ;
115
- this . mainLanguage = 'en-US ' ;
121
+ this . mainLanguage = 'en' ;
116
122
}
117
123
}
118
124
@@ -121,13 +127,15 @@ export default class CustomFormInput extends Component<Args> {
121
127
return getIdentifier ( this . name , this . args . customForms ) ;
122
128
}
123
129
124
- @computed ( 'name' )
130
+ @
computed ( 'name' , 'selectedLanguage.@each' , '[email protected] ' )
125
131
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 ;
127
135
}
128
136
129
137
get languageList ( ) : object [ ] {
130
- return languageForms . filter ( language =>
138
+ return translateLanguages . filter ( language =>
131
139
language . code === this . mainLanguage || ! this . selectedLanguage . includes ( language . code )
132
140
)
133
141
}
@@ -136,15 +144,17 @@ export default class CustomFormInput extends Component<Args> {
136
144
get translationsList ( ) : Translate [ ] {
137
145
const translations : Translate [ ] = [ ]
138
146
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
+ }
148
158
} )
149
159
return translations ;
150
160
}
@@ -164,7 +174,7 @@ export default class CustomFormInput extends Component<Args> {
164
174
min : this . min ,
165
175
max : this . max ,
166
176
translations : this . translationsList ,
167
- mainLanguage : this . mainLanguage || 'en-US '
177
+ mainLanguage : this . mainLanguage || 'en'
168
178
} ) ;
169
179
}
170
180
@@ -189,7 +199,7 @@ export default class CustomFormInput extends Component<Args> {
189
199
this . max = 10 ;
190
200
this . subForm . clear ( ) ;
191
201
this . selectedLanguage . clear ( ) ;
192
- this . mainLanguage = 'en-US '
202
+ this . mainLanguage = 'en'
193
203
this . selectedLanguage . pushObject ( this . mainLanguage ) ;
194
204
this . args . onSave && this . args . onSave ( ) ;
195
205
}
@@ -198,7 +208,7 @@ export default class CustomFormInput extends Component<Args> {
198
208
addTranslation ( ) :void {
199
209
const obj : any = {
200
210
name : '' ,
201
- languages : languageForms ,
211
+ languages : translateLanguages ,
202
212
ignoreLanguages : this . selectedLanguage ,
203
213
selectedLang : '' ,
204
214
isDeleted : false
@@ -229,7 +239,7 @@ export default class CustomFormInput extends Component<Args> {
229
239
230
240
231
241
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 ;
233
243
}
234
244
235
245
0 commit comments