@@ -4,7 +4,7 @@ import { action, computed } from '@ember/object';
44import { inject as service } from '@ember/service' ;
55import DS from 'ember-data' ;
66import { 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 ' ;
88import { A } from '@ember/array' ;
99
1010interface 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' , 'subForm.@each.name' )
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 ( 'subForm.@each.isDeleted' )
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 ( 'subForm.@each.isDeleted' )
0 commit comments