9191 display : none;
9292 }
9393
94+ .delete-modal {
95+ position : absolute;
96+ top : -70px ;
97+ right : 0px ;
98+ width : 260px ;
99+ background : # fff ;
100+ border-radius : 10px ;
101+ padding : 10px ;
102+ display : none;
103+ border : 1px solid # a39a9a ;
104+ }
105+
94106 .select-element {
95107 width : 100% ;
96108 height : 26px ;
178190 .button-group , .info-panel , .edit-tips {
179191 box-shadow : 0px 0px 5px 0 rgba (0 , 0 , 0 , 0.3 );
180192 }
193+
194+ .add-tips {
195+ display : none;
196+ color : red;
197+ margin-right : 16px ;
198+ }
199+ .message {
200+ width : 300px ;
201+ height : 50px ;
202+ position : absolute;
203+ top : 15px ;
204+ font-size : 16px ;
205+ left : 50% ;
206+ padding-top : 15px ;
207+ display : none;
208+ margin-left : -150px ;
209+ background : # fff ;
210+ }
181211 </ style >
182212 </ head >
183213 < body style ="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0 ">
@@ -194,9 +224,13 @@ <h5>Y</h5>
194224 < div class ="video-modal ">
195225 < button class ="video-modal-close "> Close</ button >
196226 < video controls width ="720 ">
197- < source src ="https://www.runoob.com/try/demo_source/mov_bbb.mp4 " type ="video/mp4 ">
227+ < source src ="" type ="video/mp4 ">
198228 </ video >
199229 </ div >
230+ < div class ="message ">
231+ < span class ="glyphicon glyphicon-exclamation-sign " style ="color: #ec5812; "> </ span >
232+ < span > 有未完成的更改,请先保存或取消更改</ span >
233+ </ div >
200234 < div class ="edit-panel ">
201235 < div class ="button-group ">
202236 < button
@@ -241,6 +275,7 @@ <h6><span class="line-element"></span>属性信息</h6>
241275 < div class ="add-attribute-info ">
242276 </ div >
243277 < div class ="info-bottom ">
278+ < p class ="add-tips "> 请先保存或取消更改</ p >
244279 < button class ="btn btn-default btn-group-xs cancel-add "> 取消</ button >
245280 < button class ="btn btn-primary btn-group-xs addSave "> 保存</ button >
246281 </ div >
@@ -255,6 +290,7 @@ <h6>属性信息</h6>
255290 < div class ="edit-attribute-info ">
256291 </ div >
257292 < div class ="info-bottom ">
293+ < p class ="add-tips "> 请先保存或取消更改</ p >
258294 < button class ="btn btn-default btn-group-xs cancel-edit "> 取消</ button >
259295 < button disabled class ="btn btn-primary btn-group-xs editSave "> 保存</ button >
260296 </ div >
@@ -269,6 +305,13 @@ <h5>待删除要素:</h5>
269305 </ div >
270306 </ div >
271307 < div class ="info-bottom ">
308+ < div class ="delete-modal ">
309+ < p > 删除后要素将无法恢复,是否确认删除?</ p >
310+ < div class ="btns ">
311+ < button class ="final-delete-cancel btn btn-default btn-group-xs "> 取消</ button >
312+ < button class ="final-delete btn btn-danger btn-group-xs "> 删除</ button >
313+ </ div >
314+ </ div >
272315 < button class ="btn btn-default btn-group-xs cancel-delete "> 取消</ button >
273316 < button class ="btn btn-danger btn-group-xs delete "> 删除</ button >
274317 </ div >
@@ -316,7 +359,7 @@ <h5>待删除要素:</h5>
316359 }
317360 var container = document . getElementById ( 'popup' ) ;
318361 var content = document . getElementById ( 'popup-content' ) ;
319-
362+ var isChanged = false ;
320363 map = new maplibregl . Map ( {
321364 container : 'map' ,
322365 style : {
@@ -512,6 +555,7 @@ <h5>待删除要素:</h5>
512555 feature . id = datasetInfoList [ currentDataset ] . id ;
513556 currentFeature . data = feature ;
514557 document . querySelector ( '.add-feature-info>.space-info>.input-element' ) . value = JSON . stringify ( { geometry : currentFeature . data . geometry } ) ;
558+ isChanged = true ;
515559 }
516560 } ) ;
517561 var datasetService = new maplibregl . supermap . DatasetService ( dataUrl )
@@ -702,6 +746,11 @@ <h5>待删除要素:</h5>
702746 // 切换状态
703747 document . querySelector ( '.button-group' ) . addEventListener ( 'click' , function ( e ) {
704748 var className = e . target . className ;
749+ if ( isChanged ) {
750+ document . querySelector ( '.message' ) . style . display = 'block' ;
751+ document . querySelector ( '.add-tips' ) . style . display = 'inline-block' ;
752+ return ;
753+ }
705754 switchPanel ( className ) ;
706755 } ) ;
707756
@@ -729,6 +778,9 @@ <h5>待删除要素:</h5>
729778 if ( currentShowPanel ) {
730779 document . querySelector ( '.' + currentShowPanel ) . style . display = 'none' ;
731780 }
781+ document . querySelector ( '.message' ) . style . display = 'none' ;
782+ document . querySelector ( '.add-tips' ) . style . display = 'none' ;
783+ isChanged = false ;
732784 }
733785 } ) ;
734786
@@ -742,6 +794,9 @@ <h5>待删除要素:</h5>
742794 if ( currentShowPanel ) {
743795 document . querySelector ( '.' + currentShowPanel ) . style . display = 'none' ;
744796 }
797+ document . querySelector ( '.message' ) . style . display = 'none' ;
798+ document . querySelector ( '.add-tips' ) . style . display = 'none' ;
799+ isChanged = false ;
745800 }
746801 } ) ;
747802
@@ -799,15 +854,30 @@ <h5>待删除要素:</h5>
799854 var saveBtn = document . querySelector ( '.addSave' ) ;
800855 var editBtn = document . querySelector ( '.editSave' ) ;
801856 saveBtn . addEventListener ( 'click' , function ( ) {
857+ document . querySelector ( '.message' ) . style . display = 'none' ;
858+ document . querySelector ( '.add-tips' ) . style . display = 'none' ;
859+ isChanged = false ;
802860 save ( 'add' ) ;
803861 } ) ;
804862 editBtn . addEventListener ( 'click' , function ( ) {
863+ document . querySelector ( '.message' ) . style . display = 'none' ;
864+ document . querySelector ( '.add-tips' ) . style . display = 'none' ;
865+ isChanged = false ;
805866 save ( 'edit' ) ;
806867 } ) ;
807868 var deleteBtn = document . querySelector ( '.delete' ) ;
808869 deleteBtn . addEventListener ( 'click' , function ( ) {
870+ document . querySelector ( '.delete-modal' ) . style . display = 'block' ;
871+ } ) ;
872+ var deleteModalBtn = document . querySelector ( '.final-delete' ) ;
873+ deleteModalBtn . addEventListener ( 'click' , function ( ) {
874+ document . querySelector ( '.delete-modal' ) . style . display = 'none' ;
809875 deleteFeature ( ) ;
810876 } ) ;
877+ var deleteBtnCancel = document . querySelector ( '.final-delete-cancel' ) ;
878+ deleteBtnCancel . addEventListener ( 'click' , function ( ) {
879+ document . querySelector ( '.delete-modal' ) . style . display = 'none' ;
880+ } ) ;
811881 function save ( type ) {
812882 var properties = { } ;
813883 var attributeElement = document . querySelector ( '.' + type + '-attribute-info' ) ;
@@ -915,6 +985,7 @@ <h5>待删除要素:</h5>
915985 map . on ( 'click' , function ( e ) {
916986 var res = map . queryRenderedFeatures ( e . point ) ;
917987 if ( status === 'EDIT' ) {
988+ isChanged = true ;
918989 if ( res [ 0 ] && ! [ 'mapbox-gl-draw-cold' , 'mapbox-gl-draw-hot' ] . indexOf ( res [ 0 ] . source ) > - 1 ) {
919990 var type = res [ 0 ] . type ;
920991 var geometry = res [ 0 ] . geometry ;
@@ -984,17 +1055,6 @@ <h5>待删除要素:</h5>
9841055 renderEditAttribute ( 'edit' , currentFeature . data . properties ) ;
9851056 }
9861057 } ) ;
987- map . on ( 'draw.update' , function ( e ) {
988- var feature = e . features [ 0 ] ;
989- if ( status === 'EDIT' ) {
990- document . querySelector ( '.edit-tips' ) . style . display = 'none' ;
991- currentFeature . dataset = feature . properties . datasetName ;
992- currentFeature . data = feature ;
993- document . querySelector ( '.edit-feature-info' ) . style . display = 'block' ;
994- document . querySelector ( '.edit-feature-info>.space-info>.input-element' ) . value = JSON . stringify ( { geometry : currentFeature . data . geometry } ) ;
995- renderEditAttribute ( 'edit' , currentFeature . data . properties ) ;
996- }
997- } ) ;
9981058 map . on ( 'draw.selectionchange' , function ( ) {
9991059 updateChanged = true ;
10001060 document . querySelector ( '.editSave' ) . disabled = false ;
0 commit comments