拆解一个Power Apps模板应用 - 4 - ViewTicketScreen

接上一节, 本节继续解析屏幕构件。

三. ViewTicketScreen

屏幕总体构成:

这里用到一个新的页面类型,Scrollable 页面。

顺便来了解一下这个Scrollable类型的页面:

新建一个Scrollable 页面,看看默认的各个模块在页面上的位置(默认的,每个控件的宽度都是占据整行的。为便于识别,我把各个控件的宽度做了调整,以便把背景也就是最高层红色的ScrollableScreen、以及第二层黄色的画布也就是Canvas1露出来)。

Add section 在左侧没有对应的控件进行控制,是系统自带的,用来添加新的卡片。每添加一个卡片,它就会被自动放到新加卡片的下方,用来继续添加新的卡片。

 回到主题,分析ViewTicketScreen:

可以看出,这个ScrollableScreen最底层只有一个卡片。卡片上面的两级, ViewTicketScreen以及 ViewTicketScreenCanvas 只是设置了视觉效果,如背景及边框颜色等。没有操作逻辑的设定,略去不提。

接下来我们一起来解析ViewTicketScreenDataCard 卡片控件:

按照页面元素类型对卡片控件进行分区,可以划分成四个主要区域:

1. 绿框标出的标题区域

展开来看,内部构成很简单,总共三个控件元素:

  • a. 返回按钮: OnSelect = Back();  
  • b. 标题文字: Text = "View Ticket";  
  • c. 背景矩形框: Fill = RGBA(158, 11, 15, 1)。

2. 黑底的信息概览区域

如上图蓝框标出的,这片区域包含三类控件:

  • A. 一个票券形状的图标(设定好Image 属性和布局相关的属性就行)。

  • B. 一系列标签控件,分两类:

    • I. 标识名称的标签(静态 – 上图中控件名里有Label的几个): 设定好 Text 属性就行。
    • II. 需要从后台数据源获取数据进行显示的标签(动态 – /#和控件名包含Label相对应的没有Label的几个控件。通过名称来区分不同控件,尤其是有对应关系的控件,是个好习惯。#/),

举两个例子:

>> a. Status控件:

     >Text= SelectedTicket.TaskStatus.Value  /# SelectedTicket 在上面的MyTicketScreen页面里进行了定义#/
     > Color = Switch( SelectedTicket.TaskStatus.Value,
"DEFERRED",        ColorValue("#BC40EA"),
"COMPLETED",    ColorValue("#00a604"),
"IN PROGRESS",  ColorValue("#f0c000"),
"NOT STARTED",        ColorValue("#fe2e34"),
"WAITING ON CSR",   ColorValue("#28a1ff")
   /# 这里利用Switch函数根据任务的不同状态来设定状态文本的颜色。#/

b. Created控件:

>> Text = Text(SelectedTicket.Create, ShortDate) /# 这里使用了Text函数加ShortDate 参数来格式化日期格式#/

  • C. 一个设定为黑色背景的按钮控件。主要是视觉样式上的设置。

3. 逐条细节的区域

由下面几组控件组成。

可以看到,前三组都是由三个子控件控件组成: 

  • 两个Label(和上面黑底部分一样,一个动态标签一个静态标签)
  • 一个背景矩形控件。

这三种控件之前提到多次,不再赘述。

重点先来看看Completed控件, 它实现了一个比较有趣的功能 ---- 进度滚动条。具体来看:

A. 进度数字显示:

由下面两个控件组成,一个图标和一个位于图标内的标签控件(用来显示数字)

这两个控件需根据当前进度值而显示到相应的位置,因此主要有两个属性需要控制:

  • 数字控件的 Text: = SelectedTicket.PercentComplete *100 & "%"   /#这里使用了 & 命令符直接连接两个字符串, 另外用到了当前选中工单的完成百分比这个数值。#/

  • 数字和图标两个控件的横向位置

-- 数字控件: X= ViewTicketScreenCompletedColoredButton.Width +48

-- 图标控件: X = ViewTicketScreenCompletedColoredButton.Width +25

可以看到,两个控件都是以ViewTicketScreenCompletedColoredButton.Width 为基准,然后加上自身的增量来进行横向定位。

B. 进度条:

由两个按钮控件组成。

  • 做静态背景: 一次性设置好视觉样式就行。另外,X =45, Y=779, Width=510.

  • 随进度增长宽度逐渐变大的按钮: 初始的横向值被设置成0,然后会随着进度增加按钮宽度不断向右延展。主要的属性有:

    • X = 45, Y= 779  /#和上面的静态按钮保持位置一致#/
    • Fill = RGBA(158, 11, 15, 1) , /#使用了和上面的图标一样的颜色,保持视觉效果一致。#/]
    • Width = 510*SelectedTicket.PercentComplete  /# 以静态背景按钮的宽度为基准,乘一个系数来决定当前进度对应的长度。这里的系数使用的是当前选定工单的完成百分比。这个百分比的数值是在后续编辑工单里手工拖动进度条生成的。#/

4. 再来看最后的Description 控件。

它用到了一个文本输入的控件。在动态获取数据时,和Label控件不同(通过Text来获取数据),这个文本输入控件是通过Default 属性来取值,Default = PlainText( SelectedTicket.Description)。

  • 编辑按钮: OnSelect = Navigate(EditTicketFormScreen,None)

PS. 最后还有个添加新卡片的按钮,由于不可控,略去不提。

下一节我们继续解析后续的屏幕。

未完,待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值