Page change on logout注销时的页面变化

<< 点击显示目录 >>

主页  mappView帮助助手 > mapp View帮助信息 > 指南 > FAQs > 事件和行动应用 >

Page change on logout注销时的页面变化

这个例子演示了以下使用情况。

 

在一个生产班次结束时,活动用户通过点击注销图标退出HMI应用程序。在注销时,HMI应用程序应切换回主屏幕,以便再次登录。

Logout

注销后会显示登录页面。

LoginScreen

实施

一张带有注销图标的图片被配置在一块内容上。点击图片的响应被包含在事件绑定中;该动作是将一个会话变量设置为 "True"。

在会话变量的ValueChanged事件中,"注销Logout "和 "导航Navigate "的动作被依次执行,然后会话变量被设置回 "假False"。

会话变量的定义

会话变量是在逻辑视图的.svar文件中创建的。

<Variable name="CloseAndLogout" scope="session"  xsi:type="BOOL" value="false" />

在一块内容上配置一个带有注销图标的图像

一个图像部件被添加到内容片上,内容片ID为 "ContentNavigation";然后在属性 "image "上引用了一个图像文件。

<Widget xsi:type="widgets.brease.Image" id="ImageLogout" top="774" left="1534" width="64" height="64" zIndex="1" image="Media/Logout.svg" />

创建一个事件绑定

HMI应用程序中的事件绑定是包括对图像部件上的点击事件的响应,以及在.svar文件中创建的会话变量被写入的地方。

<EventBinding>
 <Source xsi:type="widgets.brease.Image.Event" contentRefId="ContentNavigation" widgetRefId="ImageLogout" event="Click"/>
 <EventHandler>
  <Action>
   <Target xsi:type="session.VariableAction" refId="CloseAndLogout" >
    <Method xsi:type="session.VariableAction.SetValueBool" value="true" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>

 

在会话变量的ValueChanged事件中,在下一步配置了3个连续的动作,包括注销、改变页面和重置会话变量。

<EventBinding>
 <Source xsi:type="session.Event" refId="CloseAndLogout" event="ValueChanged" />
 <EventHandler condition="newValue">
  <Sequence>
   <Step order="0">
    <Action>
     <Target xsi:type="session.VariableAction" refId="CloseAndLogout" >
      <Method xsi:type="session.VariableAction.SetValueBool" value="false" />
     </Target>
    </Action>
   </Step>
   <Step order="1">
    <Action>
     <Target xsi:type="clientSystem.Action">
      <Method xsi:type="clientSystem.Action.Navigate" pageId="MainPage" />
     </Target>
    </Action>
   </Step>
   <Step order="2">
    <Action>
     <Target xsi:type="clientSystem.Action">
      <Method xsi:type="clientSystem.Action.Logout" />
     </Target>
    </Action>
   </Step>
  </Sequence>
 </EventHandler>
</EventBinding>

在一块内容的上下文中,不允许平行或顺序执行 "导航 "动作。这是因为当这个动作被执行时,内容(元素element<Source>的contentRefId)不再活跃,因此不能确保其他动作也被执行。使用会话变量作为源,总能保证动作也被执行。