@@ -83,7 +83,7 @@ define([
8383 modelStep : 1 ,
8484 step : [
8585 { name : 'ml_dataSplit' , label : 'Data Split' , useApp : true } ,
86- { name : 'ml_regression' , label : 'Regressor' , useApp : true } ,
86+ { name : 'ml_regression' , label : 'Regressor' , useApp : true , child : [ 'pp_fit' , 'pp_predict' ] } ,
8787 { name : 'pp_fit' , label : 'Fit' } ,
8888 { name : 'pp_predict' , label : 'Predict' } ,
8989 { name : 'ml_evaluation' , label : 'Evaluation' , useApp : true , state : { modelType : 'rgs' } } ,
@@ -94,7 +94,7 @@ define([
9494 modelStep : 1 ,
9595 step : [
9696 { name : 'ml_dataSplit' , label : 'Data Split' , useApp : true } ,
97- { name : 'ml_classification' , label : 'Classifier' , useApp : true } ,
97+ { name : 'ml_classification' , label : 'Classifier' , useApp : true , child : [ 'pp_fit' , 'pp_predict' ] } ,
9898 { name : 'pp_fit' , label : 'Fit' } ,
9999 { name : 'pp_predict' , label : 'Predict' } ,
100100 { name : 'ml_evaluation' , label : 'Evaluation' , useApp : true , state : { modelType : 'clf' } } ,
@@ -104,7 +104,7 @@ define([
104104 label : 'Clustering' ,
105105 modelStep : 0 ,
106106 step : [
107- { name : 'ml_clustering' , label : 'Clustering' , useApp : true } ,
107+ { name : 'ml_clustering' , label : 'Clustering' , useApp : true , child : [ 'pp_fit' , 'pp_predict' , 'pp_transform' ] } ,
108108 { name : 'pp_fit' , label : 'Fit' } ,
109109 { name : 'pp_predict' , label : 'Predict' } ,
110110 { name : 'pp_transform' , label : 'Transform' } ,
@@ -115,7 +115,7 @@ define([
115115 label : 'Dimension Reduction' ,
116116 modelStep : 0 ,
117117 step : [
118- { name : 'ml_dimensionReduction' , label : 'Dimension Reduction' , useApp : true } ,
118+ { name : 'ml_dimensionReduction' , label : 'Dimension Reduction' , useApp : true , child : [ 'pp_fit' , 'pp_transform' ] } ,
119119 { name : 'pp_fit' , label : 'Fit' } ,
120120 { name : 'pp_transform' , label : 'Transform' }
121121 ]
@@ -125,7 +125,7 @@ define([
125125 modelStep : 1 ,
126126 step : [
127127 { name : 'ml_dataSplit' , label : 'Data Split' , useApp : true } ,
128- { name : 'ml_gridSearch' , label : 'GridSearch' , useApp : true } ,
128+ { name : 'ml_gridSearch' , label : 'GridSearch' , useApp : true , child : [ 'pp_fit' , 'pp_predict' ] } ,
129129 { name : 'pp_fit' , label : 'Fit' } ,
130130 { name : 'pp_predict' , label : 'Predict' } ,
131131 { name : 'ml_evaluation' , label : 'Evaluation' , useApp : true } ,
@@ -283,7 +283,7 @@ define([
283283 let appFileList = [ ] ;
284284 // load pipeline items
285285 tplObj . step . forEach ( ( stepObj , idx ) => {
286- let { name, label, useApp= false , state= { } } = stepObj ;
286+ let { name, label, useApp= false , child = [ ] , state= { } } = stepObj ;
287287 ppTag . appendFormatLine ( `<div class="vp-pp-item" data-flag="enabled" data-name="{0}" data-seq="{1}" data-label="{2}">
288288 <span>{3}</span>
289289 <div class="vp-pp-item-menu">
@@ -308,6 +308,7 @@ define([
308308 } ;
309309 if ( tplObj . modelStep === idx ) {
310310 pipeObj . modelStep = true ;
311+ pipeObj . child = child ;
311312 }
312313 that . state . pipeline . push ( pipeObj ) ;
313314 // append pages
@@ -329,9 +330,9 @@ define([
329330 let MlComponent = that . MlAppComponent [ obj . name ] ;
330331 if ( MlComponent ) {
331332 // DUP AREA: pp-1
332- let { name, label , index, file } = obj ;
333+ let { name, index, file } = obj ;
333334 let mlComponent = new MlComponent ( {
334- config : { id : name , name : label , path : file , category : 'Pipeline' , resizable : false } ,
335+ config : { id : name , name : that . state . pipeline [ index ] . label , path : file , category : 'Pipeline' , resizable : false } ,
335336 ...that . state . pipeline [ index ] . state
336337 } ) ;
337338 mlComponent . loadState ( ) ;
@@ -363,7 +364,7 @@ define([
363364 // DUP AREA: pp-1
364365 let { name, label, index, file } = obj ;
365366 let mlComponent = new MlComponent ( {
366- config : { id : name , name : label , path : file , category : 'Pipeline' , resizable : false } ,
367+ config : { id : name , name : that . state . pipeline [ index ] . label , path : file , category : 'Pipeline' , resizable : false } ,
367368 ...that . state . pipeline [ index ] . state
368369 } ) ;
369370 mlComponent . loadState ( ) ;
@@ -375,6 +376,10 @@ define([
375376 that . state . modelType = mlComponent . state . modelType ;
376377 let modelObj = that . modelConfig [ that . state . modelType ] ;
377378 that . state . modelTypeName = modelObj . code . split ( '(' ) [ 0 ] ;
379+
380+ that . state . pipeline [ index ] . child . forEach ( childId => {
381+ that . renderApp ( childId ) ;
382+ } ) ;
378383 }
379384 // handle app view
380385 that . handleAppView ( name , mlComponent ) ;
@@ -477,7 +482,11 @@ define([
477482 label = com_util . optionToLabel ( label ) ;
478483 optBox . appendFormatLine ( '<label for="{0}" title="{1}">{2}</label>'
479484 , opt . name , opt . name , label ) ;
480- let content = com_generator . renderContent ( this , opt . component [ 0 ] , opt , this . state ) ;
485+ let tmpState = { } ;
486+ if ( opt . value && opt . value !== '' ) {
487+ tmpState [ opt . name ] = opt . value ;
488+ }
489+ let content = com_generator . renderContent ( this , opt . component [ 0 ] , opt , tmpState ) ;
481490 optBox . appendLine ( content [ 0 ] . outerHTML ) ;
482491 } ) ;
483492 return optBox . toString ( ) ;
@@ -590,18 +599,30 @@ define([
590599 code . appendLine ( ) ;
591600 code . appendLine ( ) ;
592601 }
593- code . appendFormatLine ( "# [{0}] {1}" , stepNo , label ) ;
594602 if ( useApp ) {
595- code . append ( app . generateCode ( ) ) ;
603+ let appCode = app . generateCode ( ) ;
604+ if ( appCode instanceof Array ) {
605+ appCode = appCode . join ( '\n' ) ;
606+ }
607+ if ( appCode && appCode . trim ( ) !== '' ) {
608+ code . appendFormatLine ( "# [{0}] {1}" , stepNo ++ , label ) ;
609+ if ( name === 'ml_evaluation' ) {
610+ // import auto generate
611+ code . appendLine ( app . generateImportCode ( ) . join ( '\n' ) ) ;
612+ }
613+ code . append ( appCode ) ;
614+ }
596615 // save state
597616 that . state . pipeline [ idx ] . state = app . state ;
598617 } else {
599618 let ppResult = that . generateCodeForOptionPage ( name ) ;
600- code . append ( ppResult . code ) ;
619+ if ( ppResult && ppResult ?. code ?. trim ( ) !== '' ) {
620+ code . appendFormatLine ( "# [{0}] {1}" , stepNo ++ , label ) ;
621+ code . append ( ppResult . code ) ;
622+ }
601623 // save state
602624 that . state . pipeline [ idx ] . state = ppResult . state ;
603625 }
604- stepNo ++ ;
605626 }
606627 } ) ;
607628
0 commit comments