UI5开发 – Eclipse编辑代码

前面已经详细介绍了UI5开发模板,并且已经创建了model,参考文章UI5开发 – 创建Model,并且对该model进行了功能开发,参考文章UI5开发 – Model编程, 接下来在gateway server上注册了服务,UI5编程 – 注册service到SAP gateway server, 本文介绍如何在Eclipse里面进行编程,完善我们的应用。


应用设计:该App使用master-detail模板,左边显示plant清单,右边显示plant详细信息,有两个iconTab,一个显示plant的地址信息,一个显示google地图中plant的位置。

为了节省时间,我们不使用模板,而是用webide创建一个初始程序,然后在Eclipse中取得生成的代码进行修改。今天登陆webide发现SAP又有了版本的更新,目前是1.9.3,不知道模板文件是否有什么新变化,在以下开发过程中慢慢查看。

根据template创建项目

注意要选择我们前面创建的model

template创建过程中,新版本并没有任何变化。

gateway server取得生成的模板文件,参考Eclipse开发UI5 – 使用WebIDE生成的代码模板

为了能够直接测试,我们需要把Template生成的文件复制到Eclipse中的WebContent目录下,如图:

修改component.js,因为我们使用webide直接调用我们的model创建的模板,所以这里无需修改,如果使用其他的模板,需要更新一下model的定义信息。

config : {  
    resourceBundle : “i18n/messageBundle.properties”,  
    serviceConfig : {  
    name: “ZBLOG_PLANT_SRV”,  
    serviceUrl: “/sap/opu/odata/sap/ZBLOG_PLANT_SRV/”  
    }  
    },  

运行这个app,看看我们需要修改那些信息:

  • List 界面应该不需要修改,我们只要显示plant name以及plant number
  • Detail header部分,去掉一些不需要的,同样,只要name和number
  • 第一个iconTab用来显示地图,目前不做修改
  • 第二个iconTab的信息并没有把model中的地址信息列全,我们需要加几个字段。

修改detail页面header部分,注释掉不用的代码

修改address iconTab,添加model中定义的字段

 <Label   
     id="zlabel1"   
     text="Address Number">  
    </Label>   
    <Text   
     id="ztext1"  
     text="{Addrnumber}"  
     maxLines="0">  
    </Text>  

按照以上代码添加region字段

修改index.html,在Head部分加载google api

 <script type="text/javascript"  
     src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB0Lh5jRLPVVcct3iMVNyS_4NoiUJlvPW4&sensor=false">  
    </script>  

修改detail页面第一个iconTab,图标改成地图图标,加载google地图

  • 修改icon: icon=”sap-icon://map”
  • 修改key,连接到model中的geocode entity: key=”GeoCode”
  • 在iconTabFilter中的content里面删除不用的信息,添加google page
    <IconTabFilter   
     id="iconTabFilter1"   
     key="GeoCode"   
     icon="sap-icon://map">  
     <content>  
     <f:SimpleForm   
     id="iconTabFilter1form"   
     minWidth="1024"   
     editable="false"   
     layout="ResponsiveGridLayout"   
     labelSpanL="3"   
     labelSpanM="3"   
     emptySpanL="4"   
     emptySpanM="4"   
     columnsL="1">  
     <f:content>  
     <Label   
     id="zlabel3"   
     text="Lat">  
     </Label>   
     <Text   
     id="ztext3"  
     text="{Latitude}"  
     maxLines="0">  
     </Text>   
     <Label   
     id="zlabel4"   
     text="Long">  
     </Label>  
     <Text   
     id="ztext4"  
     text="{Longitude}"  
     maxLines="0">  
     </Text>   
     <core:ExtensionPoint   
     name="extIconTabFilterForm1"/>  
     </f:content>  
     </f:SimpleForm>   
     <VBox fitContainer="true" justifyContent="Center" alignItems="Center">   
     <HBox height="500px" width="100%" id="map_canvas" fitContainer="true" justifyContent="Center" alignItems="Center">  
     </HBox>   
     </VBox>  
     </content>  
    </IconTabFilter>  

修改Detail.controller.js,添加显示google map的代码

  • 定义全局变量:

  • 每次显示地图之前清空:

  • 添加iconTab bar的事件触发:

  • 显示地图代码如下:

 ShowMap: function(){  
     oController = this;  
     if (googleMap == null){  
     var myOptions = {  
     zoom : 15,  
     mapTypeId : google.maps.MapTypeId.ROADMAP  
     };  

     googleMap = new google.maps.Map(this.getView().byId("map_canvas").getDomRef(), myOptions);  
     var currentPosition = new google.maps.LatLng(0,0);  
     marker = new google.maps.Marker({  
     position: currentPosition,  
     map: googleMap,  
     draggable : true,  
     animation : google.maps.Animation.DROP,   
     });  
     marker.setTitle("Plant Position");  

     google.maps.event.addListener(marker, 'dragend', function() {  
     oController.SetMarker(marker, googleMap, marker.getPosition().lat(), marker.getPosition().lng());  
     });   
     }   
     currentPositionX=this.getView().byId("ztext3").getText();  
     currentPositionY=this.getView().byId("ztext4").getText();  
     this.SetMarker(marker, googleMap, currentPositionX, currentPositionY);  

    },  

    SetMarker: function(marker, googleMap, latitude, longitude){  
     // get the position of customer  
     var currentPosition = new google.maps.LatLng(latitude,longitude);  
    // this.getView().byId("upGeoLat").setValue(latitude);  
    // this.getView().byId("upGeoLong").setValue(longitude);  
     marker.setPosition(currentPosition);  
     googleMap.setCenter(currentPosition);   
    },  

测试应用

在下篇文章中会介绍如何debug这个应用,以及如何把这个应用放到Fiori LaunchPad上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值