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

前端代码记录

1.GridListItem中的布局

在这里插入图片描述

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

<VBox class="sapUiTinyMargin">
    <HBox justifyContent="SpaceBetween">
        <Title
            text="{ToolNumber}"
            wrapping="true"
            titleStyle="H5"
        />
        <t:InfoLabel
            text="{Status}"
            colorScheme="{
				path: 'Status',
				formatter: '.formatter.getStatusColorScheme'
			}"
        />
    </HBox>
    <Label
        text="{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:InfoLabel
    text="{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 colorScheme
		if (sStatus === "Available") {
			return 7;
		} else if (sStatus === "Occupied") {
			return 3;
		} else {
			// Return a default value if none of the above conditions match
			return "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:GridList
    id="toolList2"
    items="{
			path: '/ToolNumberCollection',
			sorter: {
				path: 'ToolGroup',
				group: true
			},
	}"
    mode="SingleSelectMaster"
    selectionChange="onselectionchange"
>"

需要注意path: '/ToolNumberCollection'

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

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

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

<List
    id="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标签实现对样式的控制。实现文字粗细的代码如下:

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

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

7.图标控件

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

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

8.进度条控件

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/49812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三、Web安全相关知识

请勿用于非法用途 文章目录 一、Web源码框架二、目录结构1、静态资源2、WEB-INF&#xff08;1&#xff09;classes&#xff08;2&#xff09;lib&#xff08;3&#xff09;web.xml 二、web脚本语言1、脚本种类&#xff08;1&#xff09;ASP&#xff08;2&#xff09;ASP.NET&am…

【UniApp开发小程序】悬浮按钮+出售闲置商品+商品分类选择【基于若依管理系统开发】

文章目录 界面效果界面实现悬浮按钮实现商品分类选择界面使元素均匀分布 闲置商品描述信息填写界面价格校验 界面效果 【悬浮按钮】 【闲置商品描述信息填写界面】 【商品分类选择界面】 【分类选择完成】 界面实现 悬浮按钮实现 悬浮按钮漂浮于页面之上&#xff0c;等页面…

上门小程序开发|上门服务小程序|上门家政小程序开发

随着移动互联网的普及和发展&#xff0c;上门服务成为了许多人生活中的一部分。上门小程序是一种基于小程序平台的应用程序&#xff0c;它提供了上门服务的在线平台&#xff0c;为用户提供了便捷的上门服务体验。下面将介绍一些适合开发上门小程序的商家。   家政服务商家&am…

Mybatis初识(一)

一.Mybatis是什么 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的XML或注解来配置,和映射原始类型、接口和Java POJO (Plain Old Java Objects…

动态线程池问题的解决

项目中需要将线程池也监控管理起来。 于是决定引入了hippo4j&#xff0c;这个引入很简单&#xff0c;官方的例子也很简单&#xff0c;拿过来直接跑。 出现问题了&#xff0c;用的和例子一模一样的&#xff0c;也没什么错&#xff0c;但是就是在服务器的管理控制台上没有找到动态…

Godot 4 插件 - Utility AI 研究

今天看到一个视频教学 Godot4 | 实现简单AI | Utility AI 插件_哔哩哔哩_bilibili 就看了一下。吸引我的不是插件&#xff0c;是AI这两个字母。这AI与Godot怎么结合&#xff1f;感觉还是离线使用&#xff0c;值得一看。 视频时间不长&#xff0c;15分钟左右&#xff0c;看得…

C#——多线程之Task

C#——多线程之Task 前言一、Task是什么&#xff1f;二、各应用场景以及实例分析1.异步执行代码2.等待异步操作完成3.并行执行多个任务4.处理异常5.取消异步操作 三、一些其他问题1.WhenAll与WhenAny的区别 总结 前言 在代码编写过程中&#xff0c;经常会用到多线程的知识&…

初步了解C++模板

一、函数模板 如果我们要写一个交换两个变量值的函数Swap&#xff0c;那么我们得对每一种类型都写一个&#xff0c;以便适用不同类型的参数&#xff0c;但是有了模板之后&#xff0c;可以简化操作 template<class T> void Swap(T& x, T& y) {T tmp x;x y;y …

第J2周:ResNet50V2算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第J2周&#xff1a;ResNet50V2算法实战与解析&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 目录 一、论文解读1. ResNetV2结构与…

Linux下查找python路径

本地目前装了几个版本的python&#xff0c;这里记录下查找python路径的方法。 1&#xff1a;whereis命令 whereis python2&#xff1a;which命令 which python与whereis相似&#xff0c;但which会返回第一个找到的执行文件的位置。 3&#xff1a;find命令 find命令可以搜索系…

CenOS设置启动级别

背景知识 init一共分为7个级别&#xff0c;这7个级别的所代表的含义如下 0&#xff1a;停机或者关机&#xff08;千万不能将initdefault设置为0&#xff09;1&#xff1a;单用户模式&#xff0c;只root用户进行维护2&#xff1a;多用户模式&#xff0c;不能使用NFS(Net File S…

【Docker】Docker相关基础命令

目录 一、Docker服务相关命令 1、启动docker服务 2、停止docker服务 3、重启docker服务 4、查看docker服务状态 5、开机自启动docker服务 二、Images镜像相关命令 1、查看镜像 2、拉取镜像 3、搜索镜像 4、删除镜像 三、Container容器相关命令 1、创建容器 2、查…

【C++】开源:Linux端ALSA音频处理库

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Linux端ALSA音频处理库。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…

Windows数据类型LPSTR学习

Windows在C语言的基础之上又定义了一些Windows下的数据类型&#xff1b;下面学习一下LPSTR&#xff1b; LPSTR和LPWSTR是Win32和VC所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针&#xff0c;而LPWSTR是一个指向以NULL结尾的64…

代码版本管理工具 git

1. 去B站看视频学习&#xff0c;只看前39集&#xff1a; 01-Git概述&#xff08;Git历史&#xff09;_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

电路原理分析1

d2的作用是提供一个1.25v的电平 r3、r4的作用都是限流 c1是滤波 运放的4、8脚是常规的外围 这个运放是一个运算放大电路 具体计算是这样的&#xff1a; 按照虚短原则&#xff0c;输入的信号Uinu1,输出的信号Uoutu3 按照虚断原则&#xff0c;i1i2i5i5 u1/r2i1i5&#xff…

Longhorn vs Rook vs OpenEBS vs Portworx vs IOMesh:细说 5 款 K8s 持久化存储产品优劣势

云原生时代下&#xff0c;越来越多的企业开始使用 Kubernetes&#xff08;K8s&#xff09;承载数据库、消息中间件等“生产级”有状态工作负载。由于这些应用对数据持久保存、性能、容量扩展和快速交付具有较高的要求&#xff0c;企业往往需要采用专为 Kubernetes 环境设计的持…

wxwidgets Ribbon使用简单实例

// RibbonSample.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <wx/wx.h> #include "wx/wxprec.h" #include "wx/app.h" #include "wx/frame.h" #include "wx/textctrl.h" #include "…

教雅川学缠论02-K线

传统行情上的K线是下图中这样子的 而在缠论中K线是下面这样子的&#xff0c;它没有上影线和下影线 下图是武汉控股2023年7月的日K线 接下来我们将它转换成缠论K线&#xff08;画图累死我了&#xff09; K线理解了我们才能进行下一步&#xff0c;目前位置应该很好理解的

压缩算法的原理丨基因型vcf文件为什么压缩后发生了什么?

压缩算法的本质 最近碰到一个神奇的现象&#xff0c;一份大小为16GB的xx.vcf.gz文件&#xff0c;解压之后体积变为600GB的vcf文件&#xff0c;为什么一份文件经过压缩后体积缩小了这么多&#xff1f; (work) [bio notes 21:29:40 ~/work/20230726/data]$ ls -lh总用量 620GB-…