|
@@ -50,23 +50,38 @@
|
|
|
data-group-id="{{group.id}}"
|
|
data-group-id="{{group.id}}"
|
|
|
bindtouchstart="onParameterGroupTouchStart"
|
|
bindtouchstart="onParameterGroupTouchStart"
|
|
|
bindtouchend="onParameterGroupTouchEnd"
|
|
bindtouchend="onParameterGroupTouchEnd"
|
|
|
|
|
+ bindlongpress="openStorageParameterGroupDetail"
|
|
|
>
|
|
>
|
|
|
<view class="panel-header panel-header--with-actions">
|
|
<view class="panel-header panel-header--with-actions">
|
|
|
<block wx:if="{{group.isStorageScalarGroup}}">
|
|
<block wx:if="{{group.isStorageScalarGroup}}">
|
|
|
- <view class="panel-heading-toggle generic-scalar-heading">
|
|
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="panel-heading-toggle generic-scalar-heading"
|
|
|
|
|
+ data-group-id="{{group.id}}"
|
|
|
|
|
+ bindtap="openParameterGroup"
|
|
|
|
|
+ >
|
|
|
<view class="panel-icon icon-terminal">
|
|
<view class="panel-icon icon-terminal">
|
|
|
<image class="panel-icon-image" src="/assets/icons/terminal-white.png" mode="aspectFit" />
|
|
<image class="panel-icon-image" src="/assets/icons/terminal-white.png" mode="aspectFit" />
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-group-title-wrap">
|
|
<view class="generic-group-title-wrap">
|
|
|
- <view
|
|
|
|
|
- class="panel-title"
|
|
|
|
|
- data-group-id="{{group.id}}"
|
|
|
|
|
- catchlongpress="openStorageScalarRegisterEdit"
|
|
|
|
|
- >{{group.displayName || group.name}}</view>
|
|
|
|
|
- <view class="param-meta generic-group-meta">{{group.listMetaText || group.addressRangeText}}</view>
|
|
|
|
|
|
|
+ <view class="panel-title" data-group-id="{{group.id}}">{{group.displayName || group.name}}</view>
|
|
|
|
|
+ <view class="param-meta generic-group-meta">{{group.storageCardMetaText || group.addressRangeText}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="generic-scalar-value">{{group.scalarValueText || '--'}}</view>
|
|
|
|
|
|
|
+ <block wx:if="{{group.isStorageEnumScalar}}">
|
|
|
|
|
+ <view class="generic-register-input-wrap generic-scalar-input-wrap">
|
|
|
|
|
+ <input
|
|
|
|
|
+ class="value-input generic-register-value {{group.registers[0].isDirty ? 'value-input--dirty' : ''}}"
|
|
|
|
|
+ data-group-id="{{group.id}}"
|
|
|
|
|
+ data-index="0"
|
|
|
|
|
+ value="{{group.scalarInputValueText}}"
|
|
|
|
|
+ catchtap="noop"
|
|
|
|
|
+ bindinput="onParameterRegisterValueInput"
|
|
|
|
|
+ bindblur="onParameterRegisterValueBlur"
|
|
|
|
|
+ catchlongpress="noop"
|
|
|
|
|
+ />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </block>
|
|
|
|
|
+ <view wx:else class="generic-scalar-value">{{group.scalarValueText || ''}}</view>
|
|
|
</block>
|
|
</block>
|
|
|
<block wx:else>
|
|
<block wx:else>
|
|
|
<view
|
|
<view
|
|
@@ -79,7 +94,12 @@
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-group-title-wrap">
|
|
<view class="generic-group-title-wrap">
|
|
|
<view class="panel-title" data-group-id="{{group.id}}" catchlongpress="openParameterGroupEdit">{{group.displayName || group.name}}</view>
|
|
<view class="panel-title" data-group-id="{{group.id}}" catchlongpress="openParameterGroupEdit">{{group.displayName || group.name}}</view>
|
|
|
- <view class="param-meta generic-group-meta">{{group.listMetaText || group.addressRangeText}}</view>
|
|
|
|
|
|
|
+ <block wx:if="{{isStorageAccessProtocol}}">
|
|
|
|
|
+ <view class="param-meta generic-group-meta">{{group.storageCardMetaText || group.addressRangeText}}</view>
|
|
|
|
|
+ </block>
|
|
|
|
|
+ <block wx:else>
|
|
|
|
|
+ <view wx:if="{{group.listMetaText || !group.sourceMetadataLocked}}" class="param-meta generic-group-meta">{{group.listMetaText || group.addressRangeText}}</view>
|
|
|
|
|
+ </block>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view wx:if="{{isModbusProtocol}}" class="panel-actions generic-group-actions">
|
|
<view wx:if="{{isModbusProtocol}}" class="panel-actions generic-group-actions">
|
|
@@ -119,10 +139,10 @@
|
|
|
bindtap="openParameterRegisterInfo"
|
|
bindtap="openParameterRegisterInfo"
|
|
|
catchlongpress="openParameterRegisterEdit"
|
|
catchlongpress="openParameterRegisterEdit"
|
|
|
>
|
|
>
|
|
|
- {{register.name}}
|
|
|
|
|
|
|
+ {{register.displayName || register.name}}
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="generic-register-meta">
|
|
|
|
|
- <text>{{register.metaText || (register.addressText + ' ' + register.rawValueText)}}</text>
|
|
|
|
|
|
|
+ <view wx:if="{{register.metaText || !register.sourceMetadataLocked}}" class="generic-register-meta">
|
|
|
|
|
+ <text>{{register.metaText || (register.addressText + (register.rawValueText ? ' ' + register.rawValueText : ''))}}</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-register-input-wrap {{register.showUnit && register.unit ? 'generic-register-input-wrap--unit' : ''}}">
|
|
<view class="generic-register-input-wrap {{register.showUnit && register.unit ? 'generic-register-input-wrap--unit' : ''}}">
|
|
@@ -157,7 +177,7 @@
|
|
|
<view class="generic-group-detail-header">
|
|
<view class="generic-group-detail-header">
|
|
|
<view class="panel-title">{{activeParameterGroup.detailTitleText || activeParameterGroup.displayName || activeParameterGroup.name}}</view>
|
|
<view class="panel-title">{{activeParameterGroup.detailTitleText || activeParameterGroup.displayName || activeParameterGroup.name}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="generic-group-detail-meta">
|
|
|
|
|
|
|
+ <view wx:if="{{activeParameterGroup.detailMetaText || !activeParameterGroup.sourceMetadataLocked}}" class="generic-group-detail-meta">
|
|
|
{{activeParameterGroup.detailMetaText || activeParameterGroup.addressRangeText}}
|
|
{{activeParameterGroup.detailMetaText || activeParameterGroup.addressRangeText}}
|
|
|
</view>
|
|
</view>
|
|
|
<view
|
|
<view
|
|
@@ -169,7 +189,7 @@
|
|
|
style="{{register.dragStyle}}"
|
|
style="{{register.dragStyle}}"
|
|
|
>
|
|
>
|
|
|
<view
|
|
<view
|
|
|
- wx:if="{{!activeParameterGroup.isStructLayout}}"
|
|
|
|
|
|
|
+ wx:if="{{!activeParameterGroup.isStructLayout && !activeParameterGroup.sourceMetadataLocked}}"
|
|
|
class="generic-register-drag-handle {{register.dragHandleClass}}"
|
|
class="generic-register-drag-handle {{register.dragHandleClass}}"
|
|
|
data-group-id="{{activeParameterGroup.id}}"
|
|
data-group-id="{{activeParameterGroup.id}}"
|
|
|
data-index="{{register.sourceIndex !== undefined ? register.sourceIndex : registerIndex}}"
|
|
data-index="{{register.sourceIndex !== undefined ? register.sourceIndex : registerIndex}}"
|
|
@@ -191,10 +211,10 @@
|
|
|
bindtap="openParameterRegisterInfo"
|
|
bindtap="openParameterRegisterInfo"
|
|
|
catchlongpress="openParameterRegisterEdit"
|
|
catchlongpress="openParameterRegisterEdit"
|
|
|
>
|
|
>
|
|
|
- {{register.name}}
|
|
|
|
|
|
|
+ {{register.displayName || register.name}}
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="generic-register-meta">
|
|
|
|
|
- <text>{{register.metaText || (register.addressText + ' ' + register.rawValueText)}}</text>
|
|
|
|
|
|
|
+ <view wx:if="{{register.metaText || !register.sourceMetadataLocked}}" class="generic-register-meta">
|
|
|
|
|
+ <text>{{register.metaText || (register.addressText + (register.rawValueText ? ' ' + register.rawValueText : ''))}}</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-register-input-wrap {{register.showUnit && register.unit ? 'generic-register-input-wrap--unit' : ''}}">
|
|
<view class="generic-register-input-wrap {{register.showUnit && register.unit ? 'generic-register-input-wrap--unit' : ''}}">
|
|
@@ -232,87 +252,135 @@
|
|
|
|
|
|
|
|
<block wx:if="{{parameterDialog.mode == 'createGroup' || parameterDialog.mode == 'editGroup'}}">
|
|
<block wx:if="{{parameterDialog.mode == 'createGroup' || parameterDialog.mode == 'editGroup'}}">
|
|
|
<view class="generic-dialog-body">
|
|
<view class="generic-dialog-body">
|
|
|
- <view class="generic-config-row">
|
|
|
|
|
- <view class="param-main">
|
|
|
|
|
- <view class="param-name">{{isStorageAccessProtocol ? '结构体组名' : '寄存器组名'}}</view>
|
|
|
|
|
- <view class="param-meta">{{isStorageAccessProtocol ? '内存地址连续' : '每组寄存器地址连续'}}</view>
|
|
|
|
|
|
|
+ <block wx:if="{{parameterDialog.metadataLocked}}">
|
|
|
|
|
+ <view class="generic-info-stack">
|
|
|
|
|
+ <view class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">名称</view>
|
|
|
|
|
+ <view class="generic-info-value">{{parameterDialog.groupName}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.sourceDisplayText}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">来源</view>
|
|
|
|
|
+ <view class="generic-info-value">{{parameterDialog.sourceDisplayText}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.sourceAddressText}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">起始地址</view>
|
|
|
|
|
+ <view class="generic-info-value">{{parameterDialog.sourceAddressText}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.sourceByteLength}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">长度</view>
|
|
|
|
|
+ <view class="generic-info-value">{{parameterDialog.sourceByteLength}}B</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.sourceTypeText}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">类型</view>
|
|
|
|
|
+ <view class="generic-info-value">{{parameterDialog.sourceTypeText}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.enumOptions.length}}" class="generic-info-row generic-info-row--toggle" bindtap="toggleParameterEnumOptions">
|
|
|
|
|
+ <view class="generic-info-label">枚举</view>
|
|
|
|
|
+ <view class="generic-info-value generic-info-value--toggle">
|
|
|
|
|
+ <text>{{parameterDialog.enumExpanded ? '收起' : '展开'}}</text>
|
|
|
|
|
+ <view class="entry-chevron {{parameterDialog.enumExpanded ? 'is-expanded' : ''}}"></view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.enumOptions.length && parameterDialog.enumExpanded}}" class="generic-info-row generic-info-row--enum-list">
|
|
|
|
|
+ <view class="generic-info-label"></view>
|
|
|
|
|
+ <scroll-view class="generic-info-value generic-info-value--enum-list" scroll-y>
|
|
|
|
|
+ <view wx:for="{{parameterDialog.enumOptions}}" wx:for-item="option" wx:key="text">{{option.text}}</view>
|
|
|
|
|
+ </scroll-view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.showPollEnabled}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">参与轮询</view>
|
|
|
|
|
+ <switch
|
|
|
|
|
+ checked="{{parameterDialog.pollEnabled}}"
|
|
|
|
|
+ color="#0f766e"
|
|
|
|
|
+ data-field="pollEnabled"
|
|
|
|
|
+ bindchange="onParameterDraftSwitchChange"
|
|
|
|
|
+ />
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
- <input
|
|
|
|
|
- class="value-input generic-value-input"
|
|
|
|
|
- data-field="groupName"
|
|
|
|
|
- value="{{parameterDialog.groupName}}"
|
|
|
|
|
- bindinput="onParameterDraftInput"
|
|
|
|
|
- />
|
|
|
|
|
- </view>
|
|
|
|
|
- <view wx:if="{{isModbusProtocol}}" class="generic-config-row">
|
|
|
|
|
- <view class="param-main">
|
|
|
|
|
- <view class="param-name">寄存器类型</view>
|
|
|
|
|
- <view class="param-meta">决定读取功能码与是否可写</view>
|
|
|
|
|
|
|
+ </block>
|
|
|
|
|
+ <block wx:else>
|
|
|
|
|
+ <view class="generic-config-row">
|
|
|
|
|
+ <view class="param-main">
|
|
|
|
|
+ <view class="param-name">{{isStorageAccessProtocol ? '结构体组名' : '寄存器组名'}}</view>
|
|
|
|
|
+ <view class="param-meta">{{isStorageAccessProtocol ? '内存地址连续' : '每组寄存器地址连续'}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <input
|
|
|
|
|
+ class="value-input generic-value-input"
|
|
|
|
|
+ data-field="groupName"
|
|
|
|
|
+ value="{{parameterDialog.groupName}}"
|
|
|
|
|
+ bindinput="onParameterDraftInput"
|
|
|
|
|
+ />
|
|
|
</view>
|
|
</view>
|
|
|
- <picker
|
|
|
|
|
- mode="selector"
|
|
|
|
|
- range="{{parameterRegisterTypeOptions}}"
|
|
|
|
|
- range-key="label"
|
|
|
|
|
- value="{{parameterDialog.registerTypeIndex}}"
|
|
|
|
|
- bindchange="onParameterDraftTypeChange"
|
|
|
|
|
- >
|
|
|
|
|
- <view class="generic-picker-value">{{parameterDialog.registerTypeText}}</view>
|
|
|
|
|
- </picker>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="generic-config-row">
|
|
|
|
|
- <view class="param-main">
|
|
|
|
|
- <view class="param-name">{{isStorageAccessProtocol ? '内存起始地址' : '寄存器起始地址'}}</view>
|
|
|
|
|
- <view class="param-meta">{{isStorageAccessProtocol ? '16进制,最多 8 位,例如 000000A0' : '16进制,例如 00A0'}}</view>
|
|
|
|
|
|
|
+ <view wx:if="{{isModbusProtocol}}" class="generic-config-row">
|
|
|
|
|
+ <view class="param-main">
|
|
|
|
|
+ <view class="param-name">寄存器类型</view>
|
|
|
|
|
+ <view class="param-meta">决定读取功能码与是否可写</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <picker
|
|
|
|
|
+ mode="selector"
|
|
|
|
|
+ range="{{parameterRegisterTypeOptions}}"
|
|
|
|
|
+ range-key="label"
|
|
|
|
|
+ value="{{parameterDialog.registerTypeIndex}}"
|
|
|
|
|
+ bindchange="onParameterDraftTypeChange"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="generic-picker-value">{{parameterDialog.registerTypeText}}</view>
|
|
|
|
|
+ </picker>
|
|
|
</view>
|
|
</view>
|
|
|
- <input
|
|
|
|
|
- class="value-input generic-value-input"
|
|
|
|
|
- data-field="startAddress"
|
|
|
|
|
- value="{{parameterDialog.startAddress}}"
|
|
|
|
|
- bindinput="onParameterDraftInput"
|
|
|
|
|
- />
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="generic-config-row">
|
|
|
|
|
- <view class="param-main">
|
|
|
|
|
- <view class="param-name">{{isStorageAccessProtocol ? '字节长度' : '寄存器数量'}}</view>
|
|
|
|
|
- <view class="param-meta">{{parameterDialog.structParsedSummary || '1 - 256'}}</view>
|
|
|
|
|
|
|
+ <view class="generic-config-row">
|
|
|
|
|
+ <view class="param-main">
|
|
|
|
|
+ <view class="param-name">{{isStorageAccessProtocol ? '内存起始地址' : '寄存器起始地址'}}</view>
|
|
|
|
|
+ <view class="param-meta">{{isStorageAccessProtocol ? '16进制,最多 8 位,例如 000000A0' : '16进制,例如 00A0'}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <input
|
|
|
|
|
+ class="value-input generic-value-input"
|
|
|
|
|
+ data-field="startAddress"
|
|
|
|
|
+ value="{{parameterDialog.startAddress}}"
|
|
|
|
|
+ bindinput="onParameterDraftInput"
|
|
|
|
|
+ />
|
|
|
</view>
|
|
</view>
|
|
|
- <input
|
|
|
|
|
- class="value-input generic-value-input"
|
|
|
|
|
- type="number"
|
|
|
|
|
- data-field="quantity"
|
|
|
|
|
- value="{{parameterDialog.quantity}}"
|
|
|
|
|
- bindinput="onParameterDraftInput"
|
|
|
|
|
- />
|
|
|
|
|
- </view>
|
|
|
|
|
- <view wx:if="{{parameterDialog.showPollEnabled}}" class="generic-config-row">
|
|
|
|
|
- <view class="param-main">
|
|
|
|
|
- <view class="param-name">参与轮询</view>
|
|
|
|
|
- <view class="param-meta">自动轮询</view>
|
|
|
|
|
|
|
+ <view class="generic-config-row">
|
|
|
|
|
+ <view class="param-main">
|
|
|
|
|
+ <view class="param-name">{{isStorageAccessProtocol ? '字节长度' : '寄存器数量'}}</view>
|
|
|
|
|
+ <view class="param-meta">{{parameterDialog.structParsedSummary || '1 - 256'}}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <input
|
|
|
|
|
+ class="value-input generic-value-input"
|
|
|
|
|
+ type="number"
|
|
|
|
|
+ data-field="quantity"
|
|
|
|
|
+ value="{{parameterDialog.quantity}}"
|
|
|
|
|
+ bindinput="onParameterDraftInput"
|
|
|
|
|
+ />
|
|
|
</view>
|
|
</view>
|
|
|
- <switch
|
|
|
|
|
- checked="{{parameterDialog.pollEnabled}}"
|
|
|
|
|
- color="#0f766e"
|
|
|
|
|
- data-field="pollEnabled"
|
|
|
|
|
- bindchange="onParameterDraftSwitchChange"
|
|
|
|
|
- />
|
|
|
|
|
- </view>
|
|
|
|
|
- <view wx:if="{{parameterDialog.mode == 'createGroup'}}" class="generic-struct-section">
|
|
|
|
|
- <view class="generic-struct-header">
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.showPollEnabled}}" class="generic-config-row">
|
|
|
<view class="param-main">
|
|
<view class="param-main">
|
|
|
- <view class="param-name">结构体/枚举定义</view>
|
|
|
|
|
- <view class="param-meta">支持 typedef struct、typedef enum、typedef 别名与数组</view>
|
|
|
|
|
|
|
+ <view class="param-name">参与轮询</view>
|
|
|
|
|
+ <view class="param-meta">自动轮询</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="panel-action-button" bindtap="parseParameterStructDefinition">解析</view>
|
|
|
|
|
|
|
+ <switch
|
|
|
|
|
+ checked="{{parameterDialog.pollEnabled}}"
|
|
|
|
|
+ color="#0f766e"
|
|
|
|
|
+ data-field="pollEnabled"
|
|
|
|
|
+ bindchange="onParameterDraftSwitchChange"
|
|
|
|
|
+ />
|
|
|
</view>
|
|
</view>
|
|
|
- <textarea
|
|
|
|
|
- class="generic-struct-input"
|
|
|
|
|
- maxlength="-1"
|
|
|
|
|
- placeholder="粘贴 C 结构体/枚举定义"
|
|
|
|
|
- data-field="structDefinition"
|
|
|
|
|
- value="{{parameterDialog.structDefinition}}"
|
|
|
|
|
- bindinput="onParameterDraftInput"
|
|
|
|
|
- />
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.mode == 'createGroup'}}" class="generic-struct-section">
|
|
|
|
|
+ <view class="generic-struct-header">
|
|
|
|
|
+ <view class="param-main">
|
|
|
|
|
+ <view class="param-name">结构体/枚举定义</view>
|
|
|
|
|
+ <view class="param-meta">支持 typedef struct、typedef enum、typedef 别名与数组</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="panel-action-button" bindtap="parseParameterStructDefinition">解析</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <textarea
|
|
|
|
|
+ class="generic-struct-input"
|
|
|
|
|
+ maxlength="-1"
|
|
|
|
|
+ placeholder="粘贴 C 结构体/枚举定义"
|
|
|
|
|
+ data-field="structDefinition"
|
|
|
|
|
+ value="{{parameterDialog.structDefinition}}"
|
|
|
|
|
+ bindinput="onParameterDraftInput"
|
|
|
|
|
+ />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </block>
|
|
|
</view>
|
|
</view>
|
|
|
</block>
|
|
</block>
|
|
|
|
|
|
|
@@ -321,31 +389,40 @@
|
|
|
<view class="generic-info-stack">
|
|
<view class="generic-info-stack">
|
|
|
<view class="generic-info-row">
|
|
<view class="generic-info-row">
|
|
|
<view class="generic-info-label">名称</view>
|
|
<view class="generic-info-label">名称</view>
|
|
|
- <view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.name}}</view>
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.mode == 'viewRegister' || parameterDialog.metadataLocked}}" class="generic-info-value">{{parameterDialog.name}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="name" value="{{parameterDialog.name}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="name" value="{{parameterDialog.name}}" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-info-row">
|
|
<view class="generic-info-row">
|
|
|
<view class="generic-info-label">地址</view>
|
|
<view class="generic-info-label">地址</view>
|
|
|
<view class="generic-info-value">{{parameterDialog.addressText}}</view>
|
|
<view class="generic-info-value">{{parameterDialog.addressText}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.sourceMetaText}}" class="generic-info-row">
|
|
|
|
|
- <view class="generic-info-label">来源</view>
|
|
|
|
|
- <view class="generic-info-value">{{parameterDialog.sourceMetaText}}</view>
|
|
|
|
|
- </view>
|
|
|
|
|
<view wx:if="{{parameterDialog.sourceByteLength}}" class="generic-info-row">
|
|
<view wx:if="{{parameterDialog.sourceByteLength}}" class="generic-info-row">
|
|
|
- <view class="generic-info-label">TLV长度</view>
|
|
|
|
|
|
|
+ <view class="generic-info-label">长度</view>
|
|
|
<view class="generic-info-value">{{parameterDialog.sourceByteLength}}B</view>
|
|
<view class="generic-info-value">{{parameterDialog.sourceByteLength}}B</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view wx:if="{{parameterDialog.showDataType}}" class="generic-info-row">
|
|
<view wx:if="{{parameterDialog.showDataType}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">类型</view>
|
|
<view class="generic-info-label">类型</view>
|
|
|
- <view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.dataTypeText}}</view>
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.mode == 'viewRegister' || parameterDialog.metadataLocked}}" class="generic-info-value">{{parameterDialog.sourceTypeText || parameterDialog.dataTypeText}}</view>
|
|
|
<picker wx:else mode="selector" range="{{parameterDataTypeOptions}}" range-key="label" value="{{parameterDialog.dataTypeIndex}}" bindchange="onParameterDialogDataTypeChange">
|
|
<picker wx:else mode="selector" range="{{parameterDataTypeOptions}}" range-key="label" value="{{parameterDialog.dataTypeIndex}}" bindchange="onParameterDialogDataTypeChange">
|
|
|
<view class="generic-picker-value">{{parameterDialog.dataTypeText}}</view>
|
|
<view class="generic-picker-value">{{parameterDialog.dataTypeText}}</view>
|
|
|
</picker>
|
|
</picker>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.enumOptions.length}}" class="generic-info-row generic-info-row--toggle" bindtap="toggleParameterEnumOptions">
|
|
|
|
|
+ <view class="generic-info-label">枚举</view>
|
|
|
|
|
+ <view class="generic-info-value generic-info-value--toggle">
|
|
|
|
|
+ <text>{{parameterDialog.enumExpanded ? '收起' : '展开'}}</text>
|
|
|
|
|
+ <view class="entry-chevron {{parameterDialog.enumExpanded ? 'is-expanded' : ''}}"></view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{parameterDialog.enumOptions.length && parameterDialog.enumExpanded}}" class="generic-info-row generic-info-row--enum-list">
|
|
|
|
|
+ <view class="generic-info-label"></view>
|
|
|
|
|
+ <scroll-view class="generic-info-value generic-info-value--enum-list" scroll-y>
|
|
|
|
|
+ <view wx:for="{{parameterDialog.enumOptions}}" wx:for-item="option" wx:key="text">{{option.text}}</view>
|
|
|
|
|
+ </scroll-view>
|
|
|
|
|
+ </view>
|
|
|
<view wx:if="{{parameterDialog.showTextLength}}" class="generic-info-row">
|
|
<view wx:if="{{parameterDialog.showTextLength}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">长度</view>
|
|
<view class="generic-info-label">长度</view>
|
|
|
- <view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.textByteLength || '--'}}B</view>
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.mode == 'viewRegister' || parameterDialog.metadataLocked}}" class="generic-info-value">{{parameterDialog.textByteLength || '--'}}B</view>
|
|
|
<input wx:else class="value-input generic-value-input" type="number" data-field="textByteLength" value="{{parameterDialog.textByteLength}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" type="number" data-field="textByteLength" value="{{parameterDialog.textByteLength}}" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
<view class="generic-info-row">
|
|
<view class="generic-info-row">
|
|
@@ -353,26 +430,35 @@
|
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.remark || '--'}}</view>
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.remark || '--'}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="remark" value="{{parameterDialog.remark}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="remark" value="{{parameterDialog.remark}}" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.showUnit}}" class="generic-info-row">
|
|
|
|
|
|
|
+ <view wx:if="{{parameterDialog.showPollEnabled}}" class="generic-info-row">
|
|
|
|
|
+ <view class="generic-info-label">参与轮询</view>
|
|
|
|
|
+ <switch
|
|
|
|
|
+ checked="{{parameterDialog.pollEnabled}}"
|
|
|
|
|
+ color="#0f766e"
|
|
|
|
|
+ data-field="pollEnabled"
|
|
|
|
|
+ bindchange="onParameterDraftSwitchChange"
|
|
|
|
|
+ />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view wx:if="{{!parameterDialog.isEnumType && parameterDialog.showUnit}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">单位</view>
|
|
<view class="generic-info-label">单位</view>
|
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.unit || '--'}}</view>
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.unit || '--'}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="unit" value="{{parameterDialog.unit}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="unit" value="{{parameterDialog.unit}}" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.showDataType}}" class="generic-info-row">
|
|
|
|
|
|
|
+ <view wx:if="{{!parameterDialog.isEnumType && parameterDialog.showDataType}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">公式</view>
|
|
<view class="generic-info-label">公式</view>
|
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.conversionFormula || '--'}}</view>
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.conversionFormula || '--'}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="conversionFormula" value="{{parameterDialog.conversionFormula}}" placeholder="x" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="conversionFormula" value="{{parameterDialog.conversionFormula}}" placeholder="x" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.conversionFormulaErrorText}}" class="generic-info-row">
|
|
|
|
|
|
|
+ <view wx:if="{{!parameterDialog.isEnumType && parameterDialog.conversionFormulaErrorText}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">公式</view>
|
|
<view class="generic-info-label">公式</view>
|
|
|
<view class="generic-info-value">{{parameterDialog.conversionFormulaErrorText}}</view>
|
|
<view class="generic-info-value">{{parameterDialog.conversionFormulaErrorText}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.mode == 'viewRegister' || parameterDialog.showRange}}" class="generic-info-row">
|
|
|
|
|
|
|
+ <view wx:if="{{!parameterDialog.isEnumType && (parameterDialog.mode == 'viewRegister' || parameterDialog.showRange)}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">最小值</view>
|
|
<view class="generic-info-label">最小值</view>
|
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.minValue || '--'}}</view>
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.minValue || '--'}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="minValue" value="{{parameterDialog.minValue}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="minValue" value="{{parameterDialog.minValue}}" bindinput="onParameterDraftInput" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view wx:if="{{parameterDialog.mode == 'viewRegister' || parameterDialog.showRange}}" class="generic-info-row">
|
|
|
|
|
|
|
+ <view wx:if="{{!parameterDialog.isEnumType && (parameterDialog.mode == 'viewRegister' || parameterDialog.showRange)}}" class="generic-info-row">
|
|
|
<view class="generic-info-label">最大值</view>
|
|
<view class="generic-info-label">最大值</view>
|
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.maxValue || '--'}}</view>
|
|
<view wx:if="{{parameterDialog.mode == 'viewRegister'}}" class="generic-info-value">{{parameterDialog.maxValue || '--'}}</view>
|
|
|
<input wx:else class="value-input generic-value-input" data-field="maxValue" value="{{parameterDialog.maxValue}}" bindinput="onParameterDraftInput" />
|
|
<input wx:else class="value-input generic-value-input" data-field="maxValue" value="{{parameterDialog.maxValue}}" bindinput="onParameterDraftInput" />
|