@@ -676,7 +676,7 @@ define([
676
676
677
677
var render2dArrItem = function ( rowIdx , item ) {
678
678
let arrRowBox = $ ( `<div class="vp-numpy-arrayEditor-row-block vp-numpy-style-flex-row vp-numpy-box-border"></div>` ) ;
679
- let arrRows = $ ( `<div class="overflow-x-auto vp-numpy-style-flex-row vp-scrollbar " style="width: 80%; overflow: auto ; margin-top:5px; margin-bottom:5px;"></div>` ) ;
679
+ let arrRows = $ ( `<div class="vp-numpy-style-flex-row" style="width: 80%; margin-top:5px; margin-bottom:5px;"></div>` ) ;
680
680
// row index
681
681
arrRows . append ( $ ( `<div class="vp-numpy-style-flex-column-center vp-bold vp-numpy-2darr-row" data-idx="${ rowIdx } " style="width: 10%;">
682
682
${ rowIdx }
@@ -709,16 +709,54 @@ define([
709
709
return arrRowBox ;
710
710
}
711
711
712
- var renderNdArr = function ( pageThis , obj , defaultValue ) {
713
- return $ ( '<input value="ndarr"/>' ) ;
712
+ var renderNdArr = function ( pageThis , obj , state ) {
713
+ let arrKey = obj . name + '_ndarr' ;
714
+ let arrState = [ '' ] ;
715
+ let value = `${ arrState . join ( ',' ) } ` ;
716
+ if ( state [ arrKey ] == undefined ) {
717
+ pageThis . setState ( { [ arrKey ] : arrState } ) ;
718
+ pageThis . setState ( { [ obj . name ] : value } ) ;
719
+ } else {
720
+ arrState = state [ arrKey ] ;
721
+ value = `${ arrState . join ( ',' ) } ` ;
722
+ }
723
+
724
+ let contentTag = $ ( `<div class="vp-numpy-ndarr-box"></div>` ) ;
725
+ $ ( contentTag ) . attr ( {
726
+ 'data-id' : obj . name
727
+ } ) ;
728
+ contentTag . data ( 'obj' , obj ) ;
729
+ // Array Items
730
+ let arrItems = $ ( `<div class="vp-numpy-style-flex-row-between-wrap"></div>` ) ;
731
+ arrState . forEach ( ( item , idx ) => {
732
+ arrItems . append ( $ ( `<div class="vp-numpy-style-flex-row">
733
+ <div class="vp-numpy-style-flex-column-center vp-bold mr5">
734
+ ${ idx + 1 }
735
+ </div>
736
+ <input class="vp-numpy-input vp-numpy-ndarr-item" data-idx="${ idx } " value="${ item } " type="text" placeholder="Value">
737
+ <button class="vp-button vp-numpy-ndarr-del">x</button>
738
+ </div>` ) ) ;
739
+ } ) ;
740
+ contentTag . append ( arrItems ) ;
741
+ // add button
742
+ contentTag . append ( $ ( `<button class="vp-button vp-numpy-ndarr-add">+</button>` ) ) ;
743
+ return contentTag ;
714
744
}
715
745
716
- var renderScalar = function ( pageThis , obj , defaultValue ) {
717
- return $ ( '<input value="scalar"/>' ) ;
746
+ var renderScalar = function ( pageThis , obj , state ) {
747
+ let placeholder = 'Input Scalar' ;
748
+ if ( obj . placeholder ) {
749
+ placeholder = obj . placeholder ;
750
+ }
751
+ return $ ( `<input class="vp-input vp-state" placeholder="${ placeholder } " value="${ state [ obj . name ] } "/>` ) ;
718
752
}
719
753
720
754
var renderParam = function ( pageThis , obj , defaultValue ) {
721
- return $ ( '<input value="param"/>' ) ;
755
+ let placeholder = 'Input Param' ;
756
+ if ( obj . placeholder ) {
757
+ placeholder = obj . placeholder ;
758
+ }
759
+ return $ ( `<input class="vp-input vp-state" placeholder="${ placeholder } " value="${ state [ obj . name ] } "/>` ) ;
722
760
}
723
761
724
762
var renderDtypeSelector = function ( pageThis , obj , defaultValue ) {
@@ -931,8 +969,61 @@ define([
931
969
//====================================================================
932
970
// Event for ndArr
933
971
//====================================================================
972
+ $ ( selector ) . on ( 'click' , '.vp-numpy-ndarr-del' , function ( ) {
973
+ let id = $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . data ( 'id' ) ;
974
+ let arrId = id + '_ndarr' ;
975
+ let idx = $ ( this ) . parent ( ) . find ( '.vp-numpy-ndarr-item' ) . data ( 'idx' ) ;
976
+ // update state
977
+ let state = pageThis . getState ( arrId ) ;
978
+ state . splice ( idx , 1 ) ;
979
+ pageThis . setState ( { [ arrId ] : state } ) ;
980
+ pageThis . setState ( { [ id ] : `${ state . join ( ',' ) } ` } ) ;
981
+ // re-render
982
+ let obj = $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . data ( 'obj' ) ;
983
+ $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . replaceWith ( function ( ) {
984
+ return renderNdArr ( pageThis , obj , pageThis . getState ( ) ) ;
985
+ } ) ;
986
+ } ) ;
987
+
988
+ $ ( selector ) . on ( 'click' , '.vp-numpy-ndarr-add' , function ( ) {
989
+ let id = $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . data ( 'id' ) ;
990
+ let arrId = id + '_ndarr' ;
991
+ let idx = 0 ;
992
+ // update state
993
+ let state = pageThis . getState ( arrId ) ;
994
+ if ( ! state ) {
995
+ state = [ ] ;
996
+ } else {
997
+ idx = state . length ;
998
+ }
999
+ state . push ( 0 ) ;
1000
+ pageThis . setState ( { [ arrId ] : state } ) ;
1001
+ pageThis . setState ( { [ id ] : `${ state . join ( ',' ) } ` } ) ;
1002
+ // re-render
1003
+ let obj = $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . data ( 'obj' ) ;
1004
+ $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . replaceWith ( function ( ) {
1005
+ return renderNdArr ( pageThis , obj , pageThis . getState ( ) ) ;
1006
+ } ) ;
1007
+ } ) ;
934
1008
1009
+ $ ( selector ) . on ( 'change' , '.vp-numpy-ndarr-item' , function ( ) {
1010
+ let id = $ ( this ) . closest ( '.vp-numpy-ndarr-box' ) . data ( 'id' ) ;
1011
+ let arrId = id + '_ndarr' ;
1012
+ let idx = $ ( this ) . data ( 'idx' ) ;
1013
+ let value = $ ( this ) . val ( ) ;
1014
+ // update state
1015
+ let state = pageThis . getState ( arrId ) ;
1016
+ state [ idx ] = value ;
1017
+ let code = `${ state . join ( ',' ) } ` ;
1018
+ pageThis . setState ( { [ arrId ] : state } ) ;
1019
+ pageThis . setState ( { [ id ] : code } ) ;
1020
+ $ ( pageThis . wrapSelector ( '#' + id ) ) . val ( code ) ;
1021
+ } ) ;
935
1022
1023
+
1024
+ //====================================================================
1025
+ // Event for tabBlock
1026
+ //====================================================================
936
1027
}
937
1028
938
1029
return {
0 commit comments