Commit 9be174bd by liulongfei

补节点

parent 25556f06
......@@ -14,20 +14,6 @@ namespace VIZ.Package.Domain
/// </summary>
public class ControlFieldNodeModel : ModelBase
{
#region Route -- 属性路由
private List<string> route;
/// <summary>
/// 属性路由
/// </summary>
public List<string> Route
{
get { return route; }
set { route = value; this.RaisePropertyChanged(nameof(Route)); }
}
#endregion
#region Num -- 编号
private string num;
......@@ -139,5 +125,10 @@ namespace VIZ.Package.Domain
}
#endregion
public override string ToString()
{
return $"[ {this.FieldIdentifier} ]";
}
}
}
......@@ -44,7 +44,7 @@
EditValue="{Binding Path=Z,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></common:LeftRightTextEdit>
<!-- 编辑模式 -->
<RadioButton Grid.Row="0" Grid.Column="2" Content="Single" Margin="50,0,0,0"
<RadioButton x:Name="rb_Single" Grid.Row="0" Grid.Column="2" Content="Single" Margin="50,0,0,0"
Visibility="{Binding Path=IsEditModeVisible,Converter={StaticResource Bool2VisibilityConverter}}"
IsChecked="True">
<dxmvvm:Interaction.Behaviors>
......
......@@ -433,6 +433,9 @@ namespace VIZ.Package.Module
string field = this.ControlField.FieldIdentifier ?? string.Empty;
this.IsEditModeVisible = !args.Any(p => field.Contains(p));
// 在编辑模式不可见时只能是Single模式
this.GetView<TripletEditPanel>().rb_Single.IsChecked = true;
}
}
}
......@@ -571,7 +571,6 @@ namespace VIZ.Package.Service
ControlFieldNodeModel node = new ControlFieldNodeModel();
node.FieldIdentifier = pars[0];
node.Route = node.FieldIdentifier.Split('.').ToList();
node.Num = num;
node.TypeSchema = pars[2];
node.Type = this.GetControlFieldType(node.TypeSchema);
......@@ -589,29 +588,20 @@ namespace VIZ.Package.Service
}
// Step 6. 根据字段FieldIdentifier构建树形结构
int count = 1;
List<ControlFieldNodeModel> fieldNodes = model.AllFiledNodes.Where(p => p.Route.Count == count).ToList();
List<ControlFieldNodeModel> parents = fieldNodes;
List<ControlFieldNodeModel> fieldNodes = new List<ControlFieldNodeModel>();
List<ControlFieldNodeModel> allNodes = model.AllFiledNodes.ToList();
while (true)
foreach (ControlFieldNodeModel node in model.AllFiledNodes)
{
++count;
List<ControlFieldNodeModel> items = model.AllFiledNodes.Where(p => p.Route.Count == count).ToList();
if (items.Count == 0)
break;
foreach (ControlFieldNodeModel item in items)
if (!node.FieldIdentifier.Contains("."))
{
string parentFieldIdentifier = string.Join(".", item.Route.Take(count - 1));
ControlFieldNodeModel parent = parents.FirstOrDefault(p => p.FieldIdentifier == parentFieldIdentifier);
if (parent == null)
continue;
parent.Items.Add(item);
// 顶级节点
fieldNodes.Add(node);
continue;
}
parents = items;
// 更新控制字段父级节点
this.UpdateControlObjectFieldParent(allNodes, fieldNodes, node);
}
model.FieldNodes = fieldNodes;
......@@ -619,5 +609,42 @@ namespace VIZ.Package.Service
// Step 7. 更新自定义字段
this.UpdateCustomControlOjbectField(conn, model, model.CustomFieldDetails, isGetValueFromViz);
}
/// <summary>
/// 更新控制字段父级对象
/// </summary>
/// <param name="allNodes">所有节点</param>
/// <param name="fieldNodes">顶级节点集合</param>
/// <param name="node">当前节点</param>
private void UpdateControlObjectFieldParent(List<ControlFieldNodeModel> allNodes, List<ControlFieldNodeModel> fieldNodes, ControlFieldNodeModel node)
{
int lastIndex = node.FieldIdentifier.LastIndexOf('.');
if (lastIndex <= 0)
return;
string parentRoute = node.FieldIdentifier.Substring(0, lastIndex);
ControlFieldNodeModel parent = allNodes.FirstOrDefault(p => p.FieldIdentifier == parentRoute);
if (parent != null)
{
parent.Items.Add(node);
return;
}
// 补节点
parent = new ControlFieldNodeModel();
parent.FieldIdentifier = parentRoute;
parent.Items.Add(node);
allNodes.Add(parent);
// 顶级节点
if (!parent.FieldIdentifier.Contains('.'))
{
fieldNodes.Add(parent);
return;
}
this.UpdateControlObjectFieldParent(allNodes, fieldNodes, parent);
}
}
}
......@@ -9,7 +9,7 @@ VIZ_VIDEO_FILTER=视频|*.mp4;*.wav;
; Viz预览重启等待时间(单位:毫秒)
VIZ_PREVIEW_RESTART_WAIT=3000
; Viz预览编辑器类型: duplet、triplet 数据隐藏过滤器, 使用 "|" 分隔
VIZ_FIELD_EDIT_DUPLET_TRIPLET_HIDDEN_FILTER=position
VIZ_FIELD_EDIT_DUPLET_TRIPLET_HIDDEN_FILTER=position|rotation
; Viz GH服务名: VizDbServer , 使用 "|" 分隔
VIZ_GH_SERVER_NAME=VizDbServer
; Viz 用户名: Guest|Admin , 使用 "|" 分隔
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment