操作栏
定义和用法
“操作栏”可重用组件是一个小组件,用于显示用户可用的一系列操作。操作将显示为一行按钮,并显示在伴随的下拉菜单中。组件配置和用户屏幕的大小决定了显示为按钮的操作的数量。所有不显示为按钮的操作都将显示在下拉菜单中。可通过以下方式配置“操作栏”可重用组件:
• 定义操作栏中包括的操作
• 设置显示为按钮的操作的最大数量
• 根据操作的可用性设置操作的可见性选项
• 定义操作的顺序
• 定义操作是否需要输入
• 为操作栏选择所需的样式
操作主要用于激活服务或弹出项。必须在 ThingWorx 中单独配置服务或弹出式混搭。必须在 ThingWorx 中的相应服务或混搭中配置其他所有功能,如 toast 消息。
“操作栏”包括在“项列表”和“项标识”可重用组件中。
下面是一个显示“操作栏”可重用组件的示例图像:
“操作栏”可重用组件没有预定义的配置。
绑定属性
适用于绑定的“操作栏”组件有以下八个属性:
• Disabled - 用于禁用混搭中小组件的布尔值。
• EventTriggered - 如果将操作的 fireEventOnFinish 配置为 true,则在运行服务或显示弹出窗口时触发该事件。
• Input - 此 JSON 需要从后端系统获取数据的输入 ID。此信息以 CCO (公用通信对象) 格式提供。
• PopupClosed - 当打开的弹出窗口关闭时触发的事件。
• ServiceActionId - 单击操作时,将使用服务操作的操作 ID 进行更新的字符串。
• ServiceActionIdChanged - 当 ServiceActionId 中的值发生更改时触发的事件,这意味着“操作栏”调用的服务运行结束。
• SubComponentConfiguration - 如果配置 JSON 在运行时发生更改,则此 JSON 可绑定到配置 JSON。如果配置在运行时不更改,请使用以下部分中所述的配置字段。
配置字段
下表显示了可用于配置此组件的 JSON 字段。
属性名称 | 说明 | 类型 | 默认值 | 必需或可选 |
maxItemsToShow | 显示的操作按钮的最大数量。如果操作按钮数大于指定的值,则会在下拉菜单中填充其他操作。 | 整数 | 2 | 必需 |
modelThingName | 事物的名称,该事物包含具有以下声明的服务: public JSONObject GetActions(@ThingworxServiceParameter(name = "ccoJson", baseType = "JSON") JSONObject ccoJson) 此服务采用包含单个项的输入(CCO 格式)。然后返回一个包含数组的 JSONObject,该数组将可用操作的 ID 映射为从后端接收到的操作的标签。请参阅下面样本 JSON 配置中的示例。 | 字符串 | "PTC.ActionBar Model.Thing" | 必需 |
actions | 操作栏中的可用操作。请参阅子属性: | 字符串 | 不适用 | 必需 |
id | 从后端系统接收到的操作的 ID。请参阅下表中的子属性。 | 字符串 | 不适用 | 必需 |
objectType | 要获取其操作的对象类型。 | 字符串 | 不适用 | 必需 |
adapter | 后端系统的源配置。请参阅子属性: | 字符串 | 不适用 | 必需 |
instanceName | 连接器实例,即,使有何种连接器连接到后端系统。 | 字符串 | "windchill" | 必需 |
thingName | 从中检索数据的后端系统或适配器的名称。 | 字符串 | "PTC.WCAdapter" | 必需 |
id 下的配置字段 |
属性名称 | 说明 | 类型 | 默认值 | 必需或可选 |
overrideLabel | 此处设置的值将显示为操作按钮的标签,覆盖来自后端系统的值。要进行本地化,可在值两边加上双括号。 | 字符串 | 不适用 | 可选 |
actionButtonVisibility | 用于确定: 在何种条件以及何种状态下显示操作按钮。选项:AlwaysShown、DisableUnavailable、HideUnavailable。AlwaysShown - 按钮始终可见且已启用。DisableUnavailable - 按钮始终可见,但当操作不可用于所选对象时,按钮将被禁用。HideUnavailable - 仅当操作可用于所选对象时,按钮才可见。 注意:其他配置也可能影响按钮是已启用还是已禁用。 | 字符串 | 不适用 | 必需 |
buttonStyle | 确定按钮的视觉样式。选项:primary、secondary、tertiary、danger、transparent。 | 字符串 | 不适用 | 必需 |
overrideSetDisabled | 如果设置了此字段,则其值将是决定启用还是禁用按钮的唯一因素。选项:true、false。如果为 true,则确保禁用该按钮,false 则确保启用按钮。 | 布尔型 | 不适用 | 可选 |
activityType | 用于确定: 此操作运行服务还是显示弹出式混搭。选项:popup、service。有关弹出项和服务的必需子属性,请参阅下表。 | 字符串 | 不适用 | 必需 |
fireEventOnFinish | 如果将此字段设置为 true,则当服务运行结束时,将触发 EventTriggered 事件,当弹出窗口关闭时,将触发 PopupClosed 事件。 | 布尔型 | 不适用 | 可选 |
inputConstraints | 确定操作的输入约束。选项:InputRequired、SingleInputOnly 和 NoInputRequired。 InputRequired:此操作必须接收输入才能运行。如果输入为空且不包含任何项,则此操作的按钮将处于禁用状态。 SingleInputOnly - 此操作必须接收单个输入才能运行。如果输入为空或包含多个项,则此操作的按钮将处于禁用状态。 NoInputRequired - 此操作可在没有任何输入的情况下运行,也可通过输入进行操作。 | 字符串 | 不适用 | 可选 |
ordinal | 操作按钮出现的顺序。具有最低序号的操作将显示在初始最左侧的位置。允许负值。 | 整数 | 不适用 | 必需 |
iconWhenEnabled | 如果指定了此字段,则在启用操作按钮时,操作按钮的标签左侧将有一个图标。 | 字符串 | 不适用 | 可选 |
entityName | 用作图标的媒体实体的名称。 | 字符串 | 不适用 | 可选 |
iconWhenDisabled | 如果指定了此字段,则在禁用操作按钮时,操作按钮的标签左侧将有一个图标。 | 字符串 | 不适用 | 可选 |
entityName | 用作图标的媒体实体的名称。 | 字符串 | 不适用 | 可选 |
popup 的 activityType 的子属性 |
属性名称 | 说明 | 类型 | 默认值 | 必需或可选 |
mashupName | 以弹出窗口形式显示的混搭的名称。 | 字符串 | 不适用 | 必需 |
redirectAfterPopupSuccess | 成功操作后,在关闭弹出窗口时,会重定向到另一混搭。 为了向“操作栏”通知弹出项所执行的操作是否已成功完成,您需要设置名为 PTC.ActionBar.popupCloseParameters 的会话参数,以指示操作成功或失败。例如,在弹出式混搭中,有一个表达式将在弹出项所执行的操作完成后执行,会话参数将在该表达式中设置。在以下示例中,由于操作成功,因此 JSON 属性 operationSuccessful 设置为 true: sessionStorage.setItem("PTC.ActionBar.popupCloseParameters", JSON.stringify( { operationSuccessful: true } )); | 字符串 | 不适用 | 可选 |
popupWidth | 指定显示的弹出窗口的宽度。如果将此字段留空,则弹出窗口将具有默认宽度 (1024)。 | 整数 | 不适用 | 可选 |
popupHeight | 指定显示的弹出窗口的宽度。如果将此字段留空,则弹出窗口将具有默认宽度 (640)。 | 整数 | 不适用 | 可选 |
service 的 activityType 的子属性 |
属性名称 | 说明 | 类型 | 默认值 | 必需或可选 |
thingWithService | 包含要运行的服务的事物的名称。 | 字符串 | 不适用 | 必需 |
serviceName | 要运行的服务的名称。 | 字符串 | 不适用 | 必需 |
parameters | 此可选字段用于将硬编码参数传递给服务。参数在 JSONObject 中定义,但必须将其格式化为 JSON 对象的字符串,并带有转义引号。参数应以 "{\"myParamName\": \"hardcodedValue\"}" 格式输入到配置文件中。请参阅下面的附加信息。 | StringRepresentationOfJSONObject | 不适用 | 可选 |
使用 parameters 配置服务操作
假定存在一个名为 MyService 的服务,其声明为:
@ThingworxServiceDefinition(name = "MyService", category = "MyCategory")
public void MyService(
@ThingworxServiceParameter(name = "exampleInt", baseType = "INTEGER") Integer exampleInt,
@ThingworxServiceParameter(name = "ExampleString", baseType = "STRING") String exampleString,
@ThingworxServiceParameter(name = "ExampleBoolean", baseType = "BOOLEAN") Boolean exampleBoolean)
MyService 的参数值如下所示:
{
\"exampleInt\": 123,
\"exampleString\": \"Hello\",
\"exampleBoolean\": true
}
| 您的服务将自动获取两个参数(如果您定义服务特征接收这两个参数):serviceParam_InputCco 和 serviceParam_ActionId。参数 serviceParam_InputCco 是 JSONObject,并且是提供给操作栏的输入。参数 serviceParam_ActionId 是所单击操作的 ID 的字符串。如果您的服务未在其声明中包括这些参数,则不能使用它们。如果要使用它们,请使用以下方法定义您的服务声明,以使用其中一个或两个: @ThingworxServiceDefinition(name = "MyService", category = "MyCategory") public void MyService( @ThingworxServiceParameter(name = "serviceParam_InputCco", baseType = "JSON") JSONObject serviceParam_InputCco, @ThingworxServiceParameter(name = "serviceParam_ActionId", baseType = "STRING") String serviceParam_ActionId) |
配置示例
{
"maxItemsToShow": {
"value": 3
},
"modelThingName": {
"entityName": "PTC.ActionBarModel.Thing"
},
"actions": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Approve",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": ""
},
"actionButtonVisibility": {
"selectedKey": "HideUnavailable"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "SingleInputOnly"
}
}
},
"ordinal": 1
}, {
"id": "Reject",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": ""
},
"actionButtonVisibility": {
"selectedKey": "HideUnavailable"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "SingleInputOnly"
}
}
},
"ordinal": 2
}, {
"id": "Analyze",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": ""
},
"actionButtonVisibility": {
"selectedKey": "HideUnavailable"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "SingleInputOnly"
}
}
},
"ordinal": 3
}, {
"id": "Reassign",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": "Reassign"
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.ReassignActionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "InputRequired"
}
}
},
"ordinal": 4
}
],
"objectType": "WT.WorkItem.Actions"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
}