当前位置: 首页 > news >正文

【项目6 UI Demo】前端代码记录

前端代码记录

1.GridListItem中的布局

在这里插入图片描述

在这个Item中的布局采用的是VBoxHBox相结合的方式。相关的代码如下:

<VBox class="sapUiTinyMargin"><HBox justifyContent="SpaceBetween"><Titletext="{ToolNumber}"wrapping="true"titleStyle="H5"/><t:InfoLabeltext="{Status}"colorScheme="{path: 'Status',formatter: '.formatter.getStatusColorScheme'}"/></HBox><Labeltext="{Description}"wrapping="true"class="sapUiTinyMarginBottom"/>
</VBox>

在这个布局中,首先采用了一个垂直的VBox做为一个整体的布局,然后再VBox中嵌套了一个HBox用于显示挂具号以及状态。
需要注意的是,因为默认情况下挂具号和挂具状态会左对齐,如果想要实现图片中的效果,需要给HBox添加一个对其的属性,让它里面的控件两端对齐。justifyContent="SpaceBetween"

2.GridList中的模式

GridList中有多种选择模式:

  • MultiSelect:多选
  • SingleSelect:默认的单选按钮在右边
  • SingleSelectLeft:单选按钮在左边
  • SingleSelectMaster:不显示单选或者多选框
  • Delete:删除
  • None:无

在这里插入图片描述

需要注意的是:点击Item和点击Item上的单选或多选按钮触发不同的事件。如果点击单选或多选框,触发的是onSelectionChange,而如果点击这个item的其他位置,则触发的是onPress事件。
但是:如果模式为SingleSelectMaster,那么点击item的任意位置都会触发onSelectionChange,而onPress事件则不会在该模式下生效。

3.自定义Formatter的使用方法

从上面的项目截图中可以看到,针对Available和Occupied两种状态,info标签的颜色是不一样的。如何实现这一功能,就需要自定义格式化器。格式化器包含在js代码中。

前端代码如下:

<t:InfoLabeltext="{Status}"colorScheme="{path: 'Status',formatter: '.formatter.getStatusColorScheme'}"
/>

代码解释:前端代码中colorScheme属性需要接受一个整型数字,不同的数字代表不同的颜色。针对这一个属性,我们调用了一个格式化器。其中path为我们的输入参数,这个参数会传递到js代码中对应的函数中。formatter属性指定的就是我们要调用的js函数。

formatter: {getStatusColorScheme: function (sStatus) {// Check the value of Status and return the corresponding colorSchemeif (sStatus === "Available") {return 7;} else if (sStatus === "Occupied") {return 3;} else {// Return a default value if none of the above conditions matchreturn "defaultColorScheme";}},
},

代码解释:在js代码中,我们接受前端传递过来的参数,根据前端传递过来的不同参数返回不同的值,这个返回的值就会直接赋值给colorScheme属性,从而根据不同的内容动态的改变不同颜色的标签。

4.常用的一些UI5的内部类

在布局过程中,通常会使用Margin或者Padding,UI5提供了一些内置的布局类,如:

  • sapUiTinyMarginBottom

其中Tiny还可以是SmallLarge等参数
Bottom还可以是Top Begin End

5.数据绑定

在这个项目的代码中,用到了两个JSON模型,涉及到一些关于数据绑定的问题。JSON数据如下:

var oModel = new JSONModel({ToolNumberCollection: [{ ToolNumber: "RP0001", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.1" },{ ToolNumber: "RP0002", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.1" },{ ToolNumber: "RP0003", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.2" },{ ToolNumber: "RP0004", Description: "这是一个测试", Status: "Occupied", ToolGroup: "Tool Group NO.1" },{ ToolNumber: "RP0005", Description: "这是一个测试", Status: "Occupied", ToolGroup: "Tool Group NO.2" },{ ToolNumber: "RP0006", Description: "这是一个测试", Status: "Occupied", ToolGroup: "Tool Group NO.1" },{ ToolNumber: "RP0007", Description: "这是一个测试", Status: "Occupied", ToolGroup: "Tool Group NO.3" },{ ToolNumber: "RP0008", Description: "这是一个测试", Status: "Occupied", ToolGroup: "Tool Group NO.3" },{ ToolNumber: "RP0009", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.2" },{ ToolNumber: "RP0010", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.2" },{ ToolNumber: "RP0011", Description: "这是一个测试", Status: "Available", ToolGroup: "Tool Group NO.3" },]
});var orders = new JSONModel({Orders: [{ Type: "领头生产订单", OrderNumber: "1603212332", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 25%", precent: 25, Count: "45", Status: "Processing" },{ Type: "可选生产订单", OrderNumber: "1603212331", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 87%", precent: 87, Count: "41", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212333", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 57%", precent: 57, Count: "35", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212331", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 54%", precent: 54, Count: "41", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212333", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 25%", precent: 25, Count: "35", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212331", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 32%", precent: 32, Count: "41", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212333", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 56%", precent: 56, Count: "35", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212331", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 43%", precent: 43, Count: "41", Status: "Available" },{ Type: "可选生产订单", OrderNumber: "1603212333", Description: "物料描述:机加工阀体 MFH-22-3-3", Rate: "挂具占比: 54%", precent: 54, Count: "35", Status: "Available" },]
});
this.getView().setModel(orders, "orders");this.getView().setModel(oModel);

上面这个例子中创建了两个模型,并设置到了view中。在xml中我们要将这些模型绑定到对应的List中去。对于第一个模型,因为设置的时候没有设置名字,那么名字就为空this.getView().setModel(oModel)

那么在xml代码中应该采用下面的方式进行数据绑定

<f:GridListid="toolList2"items="{path: '/ToolNumberCollection',sorter: {path: 'ToolGroup',group: true},}"mode="SingleSelectMaster"selectionChange="onselectionchange"
>"

需要注意path: '/ToolNumberCollection'

此外,我们要想访问模型对应的某一些字段的值,应该如下操作:

<Labeltext="{Description}"wrapping="true"class="sapUiTinyMarginBottom"
/>

对于第二个模型,因为我们已经设置了它的名字this.getView().setModel(orders, "orders"),因此在xml中进行数据绑定的时候就需要写模型的名字,如下所示:

<Listid="orderList3"items="{orders>/Orders}"growing="true"growingThreshold="3"itemPress=".onOrderItemPress"
>

关于items="{orders>/Orders}"的解释:这一行代码实际上绑定了orders对象的Orders数组,让orders成为一个遍历器,依次遍历Orders数组中的每一个元素。
如果用Java代码来说明的话。类似于:

for(Order order : orders) {
.....
}

其中items="{orders>/Orders}"中的orders就相当于Java代码中的order

6.Text和Label以及Title控件等文字控件

  • Label控件常用属性
    • text 用于设置Label的内容
    • design 用于设置文字样式。只有两个选项Standard Bold
  • Text控件常用属性
    • text 用于设置Label的内容
  • Title控件常用属性
    • text 用于设置Label的内容
    • titleStyle 可以设置标题的层级,和HTML中的h1-h6保持一致。

上述的文字控件实际上对文字样式的调整非常有限,在某些情况下需要更加复杂的文字样式定义。比如在本项目中,我们想让数量单位PC的文字更细一些,采用上述的控件就不可以了。我们可以使用FormattedText控件。这个控件可以让你直接插入HTML代码,可以使用span标签实现对样式的控制。实现文字粗细的代码如下:

 <FormattedTexthtmlText="&lt;span style='font-weight:100; font-size:14px'>PC&lt;/span>"width="24px"textAlign="Right"/>

需要注意的是,HTML代码中的标签的<这个符号需要转义,否则会报错

7.图标控件

默认情况下的图标颜色都是黑白的,有些情况下,可能会想要修改图标的颜色,可以使用color属性来控制颜色,支持似乎用RGB坐标。

<core:Iconsize="2.7rem"src="{path: 'orders>Type',formatter: '.formatter.getIconForType'}"class="sapUiSmallMarginBegin"color="rgb(52,97,135)"
/>

8.进度条控件

在UI5中提供了进度条控件来显示事件的进度。该控件的主要属性有一下几个:

  • percentValue 实际的百分比 用于显示进度条的百分比
  • displayValue 显示的百分比,在进度条上会以文字的方式显示百分比,这个属性控制显示的数值
  • state状态,和ValueState,可以配合formatter实现不同的百分比显示不同颜色的进度条
<ProgressIndicatorpercentValue="{orders>precent}"displayValue="{orders>precent}%"state="{path: 'orders>precent', formatter: '.formatter.getStateForPercentValue'}"width="15%"
/>

在这里插入图片描述

http://www.lryc.cn/news/102286.html

相关文章:

  • 【计算机网络】应用层协议 -- HTTP协议
  • 了解Unity编辑器之组件篇Layout(八)
  • 如何使用Flask-Mail来发送电子邮件
  • 【笔记】Java并发编程
  • Hive内部表和外部表
  • 【面试题】与通义千问的芯片前端设计模拟面试归纳
  • 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。npm.ps1 cannot be loaded
  • Flowable-服务-Http任务
  • Hexo+GithubPages免费搭建个人博客网站
  • 应用无线鼠标中的2.4GHz无线收发芯片
  • Oracle 时间多少秒以后 oracle interval 多少分钟之前 Oracle日期1小时后 Java时间多少秒以后 Java日期多少天之前
  • 自动驾驶之轨迹规划8——Apollo参考线和轨迹
  • ES6 - promise.all和race方法的用法详解
  • CAD .NET 15.0 企业版 Crack
  • 苍穹外卖day07——缓存菜品套餐+购物车功能实现
  • 学习笔记|大模型优质Prompt开发与应用课(二)|第四节:大模型帮你写代码,小白也能做程序
  • 建造者设计模式 + 高阶函数 => DSL
  • 重学C++系列之智能指针简单介绍
  • LabVIEW开发航天器动力学与控制仿真系统
  • 享元模式——实现对象的复用
  • 【GreenDao】关联表实现,父表关联多个子表
  • python网站创建005:数据交互
  • golang 字符串操作、处理
  • Nginx配置WebSocket反向代理
  • devops(后端)
  • Ubuntu安装企业微信
  • Prometheus 的应用服务发现及黑河部署等
  • JAVA SE -- 第十二天
  • 实战:工作中对并发问题的处理
  • 腾讯云Cloud Studio:基于Claude快速完成Excel工资自动核算