@@ -5,7 +5,7 @@ import Valert from '../Valert';
55import VlayerEditId from './VlayerEditId' ;
66import VlayerEditJSON from './VlayerEditJSON' ;
77import VlayerEditor from './VlayerEditor' ;
8- import VlayerOperation from './VlayerOperation ' ;
8+ import VlayerDelete from './VlayerDelete ' ;
99
1010import Mlayer from '../../model/Mlayer' ;
1111import Mstyle from '../../model/Mstyle' ;
@@ -51,11 +51,19 @@ export default class VlayerEdit extends React.Component {
5151 clickJson :( ) => {
5252 this . setState ( { mode :'json' } ) ;
5353 } ,
54- clickOperation :( ) => {
55- this . setState ( { mode : 'operation '} ) ;
54+ clickDelete :( ) => {
55+ this . setState ( { modal : 'delete '} ) ;
5656 } ,
5757 editIdShow :( ) => {
5858 this . setState ( { editId :true } ) ;
59+ } ,
60+ clone :( ) => {
61+ Mlayer . clone ( this . id ) . then ( ( newLayer ) => {
62+ handle . routeReplace ( 'layer/' + newLayer . get ( 'id' ) ) ;
63+ } ) ;
64+ } ,
65+ modalClose :( ) => {
66+ this . setState ( { modal :null } ) ;
5967 }
6068 } ;
6169
@@ -83,20 +91,24 @@ export default class VlayerEdit extends React.Component {
8391 return < Valert message = "no layer found" /> ;
8492 }
8593
86- let section ;
94+ let section , modal ;
8795 switch ( this . state . mode ) {
8896 case 'json' :
8997 section = < VlayerEditJSON handle = { { ...handle , change :this . handle . jsonChange } } error = { layerError } layer = { layer } /> ;
9098 break ;
9199 case 'edit' :
92100 section = < VlayerEditor key = { this . id } handle = { handle } error = { layerError } layer = { layer } /> ;
93101 break ;
94- case 'operation' :
95- section = < VlayerOperation key = { this . id } handle = { handle } error = { layerError } layer = { layer } /> ;
102+
103+ }
104+
105+ switch ( this . state . modal ) {
106+ case 'delete' :
107+ modal = < VlayerDelete key = { this . id } handle = { handle } error = { layerError } layer = { layer } /> ;
96108 break ;
97109 }
98110
99- return < div className = "" >
111+ return < div >
100112 < h2 className = "px-2 py-1 m-0 text-nav bg-light row" >
101113 < div className = "text-overflow-ellipsis flex-2 edit-name mr-2" onClick = { this . handle . editIdShow } >
102114 { this . state . editId ?
@@ -112,12 +124,31 @@ export default class VlayerEdit extends React.Component {
112124 < div onClick = { this . handle . clickJson } className = { 'd-inline-block layer-nav-link px-1 ' + ( this . state . mode === 'json' ? 'active' : '' ) } >
113125 < i className = "material-icons md-18 icon-btn gray" > code</ i >
114126 </ div >
127+ < div data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" className = "d-inline-block layer-nav-link px-1" >
128+ < i className = "material-icons md-18 icon-btn gray" > arrow_drop_down</ i >
129+ </ div >
130+ < div className = "dropdown-menu" style = { { lineHeight :1.5 } } data-boundary = "window" >
131+ < a key = "clone" onClick = { this . handle . clone } className = "dropdown-item" href = "javascript:" > clone layer</ a >
132+ < a key = "delete" onClick = { this . handle . clickDelete } className = "dropdown-item" href = "javascript:" > delete layer</ a >
133+ </ div >
115134
116135 </ div >
117136 </ h2 >
118- < div >
119- { section }
137+ < div className = "position-relative" >
138+ { section }
139+ { modal &&
140+ < div className = "modal-container" >
141+ < div className = "modal-backdrop" > </ div >
142+ < div className = "modal-content pt-3" >
143+ < button onClick = { this . handle . modalClose } className = "btn btn-light btn-xs position-absolute close-pos" >
144+ < i className = "material-icons md-14" > close</ i >
145+ </ button >
146+ { modal }
147+ </ div >
148+ </ div >
149+ }
120150 </ div >
151+
121152 </ div > ;
122153 }
123154} ;
0 commit comments