@@ -265,60 +265,19 @@ class ModelCatalogApp {
265265 if ( this . selectedModels . size === 0 ) return ;
266266
267267 const selectedModelData = this . models . filter ( model => this . selectedModels . has ( model . id ) ) ;
268+ const originalYamlData = selectedModelData . map ( model => model . originalYaml ) ;
268269
269- // Generate YAML for multiple models
270- let yaml = '' ;
271-
272- if ( selectedModelData . length === 1 ) {
273- // Single model - return original YAML
274- yaml = this . modelToYaml ( selectedModelData [ 0 ] . originalYaml ) ;
270+ // Use js-yaml to dump the data directly
271+ let yaml ;
272+ if ( originalYamlData . length === 1 ) {
273+ yaml = jsyaml . dump ( originalYamlData [ 0 ] , { indent : 2 , lineWidth : - 1 } ) ;
275274 } else {
276- // Multiple models - create a list
277- yaml = selectedModelData . map ( model => this . modelToYaml ( model . originalYaml ) ) . join ( '\n---\n' ) ;
275+ yaml = originalYamlData . map ( data => jsyaml . dump ( data , { indent : 2 , lineWidth : - 1 } ) ) . join ( '---\n' ) ;
278276 }
279277
280278 this . showYamlModal ( yaml ) ;
281279 }
282280
283- modelToYaml ( modelData ) {
284- // Convert model object back to YAML format
285- return `apiVersion: ${ modelData . apiVersion }
286- kind: ${ modelData . kind }
287- metadata:
288- name: ${ modelData . metadata . name }
289- display_name: ${ modelData . metadata . display_name }
290- labels:${ modelData . metadata . labels ?. icon_url ? `
291- icon_url: '${ modelData . metadata . labels . icon_url } '` : '' } ${ modelData . metadata . labels ?. hf_repo_url ? `
292- hf_repo_url: '${ modelData . metadata . labels . hf_repo_url } '` : '' }
293- spec:
294- model:
295- registry: '${ modelData . spec . model . registry || '' } '
296- name: ${ modelData . spec . model . name }
297- file: ${ modelData . spec . model . file }
298- version: ${ modelData . spec . model . version }
299- task: ${ modelData . spec . model . task }
300- engine:
301- engine: ${ modelData . spec . engine . engine }
302- version: ${ modelData . spec . engine . version }
303- resources: {}
304- replicas:
305- num: ${ modelData . spec . replicas . num }
306- deployment_options:
307- scheduler:
308- type: ${ modelData . spec . deployment_options . scheduler . type }
309- virtual_nodes: ${ modelData . spec . deployment_options . scheduler . virtual_nodes }
310- load_factor: ${ modelData . spec . deployment_options . scheduler . load_factor }
311- variables:
312- RAY_SCHEDULER_TYPE: ${ modelData . spec . variables . RAY_SCHEDULER_TYPE }
313- engine_args:
314- tensor_parallel_size: ${ modelData . spec . variables . engine_args . tensor_parallel_size }
315- max_model_len: ${ modelData . spec . variables . engine_args . max_model_len }
316- enforce_eager: ${ modelData . spec . variables . engine_args . enforce_eager }
317- gpu_memory_utilization: ${ modelData . spec . variables . engine_args . gpu_memory_utilization }
318- enable_chunked_prefill: ${ modelData . spec . variables . engine_args . enable_chunked_prefill }
319- served_model_name: ${ modelData . spec . variables . engine_args . served_model_name } ` ;
320- }
321-
322281 showYamlModal ( yaml ) {
323282 const modal = document . getElementById ( 'yaml-modal' ) ;
324283 const output = document . getElementById ( 'yaml-output' ) ;
0 commit comments