Commit 690f781e by liulongfei

底飞实现

parent 0b0adb28
<entry>
<entry>
<element complete="true" scene="TITLES/2022/YC/YC_FeiGun_image" name="1000">
<entry name="viz">
<entry name="location"/>
<entry name="front">
<entry name="scene">TITLES/2022/YC/YC_FeiGun_image</entry>
</entry>
<entry name="load">scene</entry>
<entry name="viz_layer"/>
<entry name="use_all_directors">yes</entry>
</entry>
<schema>
<field description="FZZongYi-M05S-Regular" location="1/2" singleline="True" type="richtext" name="1"/>
<field description="Image1" location="1/1" type="image" name="Image1"/>
<field type="float" name="scroll_data.space_before"/>
<field type="float" name="scroll_data.space_after"/>
</schema>
<entry name="data">
<entry name="1">22222222</entry>
<entry name="Image1">IMAGE*TITLES/2022/YC/mu_ad</entry>
<entry name="scroll_data.space_before">0</entry>
<entry name="scroll_data.space_after">0</entry>
</entry>
</element>
</entry>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<update> <update>
<element name="1011" description="12345678" complete="true" showautodescription="true" scene="TITLES/2022/YC/YC_FeiGun_text"> <element complete="true" scene="TITLES/2022/YC/YC_FeiGun_image" name="1000">
<entry name="viz"> <entry name="viz">
<entry name="location"></entry> <entry name="location"/>
<entry name="front"> <entry name="front">
<entry name="scene" timestamp="">TITLES/2022/YC/YC_FeiGun_text</entry> <entry name="scene">TITLES/2022/YC/YC_FeiGun_image</entry>
</entry> </entry>
<entry name="load">scene</entry> <entry name="load">scene</entry>
<entry name="viz_layer"></entry> <entry name="viz_layer"/>
<entry name="use_all_directors">yes</entry> <entry name="use_all_directors">yes</entry>
<entry name="fonts"></entry>
</entry> </entry>
<ref name="master_template">/storage/shows/{ABCB973C-3A85-4DC2-BF2B-2C01BD1433E7}/mastertemplates/YC_FeiGun_text</ref>
<entry name="default_alternatives"></entry>
<schema> <schema>
<field name="1" type="richtext" description="FZZongYi-M05S-Regular" singleline="True" location="1/1"/> <field description="FZZongYi-M05S-Regular" location="1/2" singleline="True" type="richtext" name="1"/>
<field name="scroll_data.space_before" type="float"/> <field description="Image1" location="1/1" type="image" name="Image1"/>
<field name="scroll_data.space_after" type="float"/> <field type="float" name="scroll_data.space_before"/>
<field type="float" name="scroll_data.space_after"/>
</schema> </schema>
<entry name="data"> <entry name="data">
<entry name="1" >12345678</entry> <entry name="1">22222222</entry>
<entry name="scroll_data.space_before" >0</entry> <entry name="Image1">IMAGE*TITLES/2022/YC/mu_ad</entry>
<entry name="scroll_data.space_after" >0</entry> <entry name="scroll_data.space_before">0</entry>
</entry> <entry name="scroll_data.space_after">0</entry>
<entry name="dblink">
<entry name="1"/>
</entry>
<entry name="settings">
<entry name="tabfields">
<entry name="1"/>
<entry name="scroll_data">
<entry name="type">scroll_data</entry>
</entry>
</entry>
<entry name="isfilescript">false</entry>
<entry name="modified">2023-03-13T16:54:12</entry>
</entry> </entry>
</element> </element>
</update> </update>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Package.Storage;
namespace VIZ.Package.Domain
{
/// <summary>
/// 底飞字段定义
/// </summary>
public class GridColumnScrollElementFieldDefinition : GridColumnControlFieldDefinition
{
#region PageBase -- 关联页
private PageModelBase pageBase;
/// <summary>
/// 关联页
/// </summary>
public PageModelBase PageBase
{
get { return pageBase; }
set { pageBase = value; this.RaisePropertyChanged(nameof(PageBase)); }
}
#endregion
}
}
...@@ -14,7 +14,7 @@ namespace VIZ.Package.Domain ...@@ -14,7 +14,7 @@ namespace VIZ.Package.Domain
/// <summary> /// <summary>
/// 获取场景信息 /// 获取场景信息
/// </summary> /// </summary>
/// <param name="pageBase">场景模型基类</param> /// <param name="pageBase">模型基类</param>
/// <returns>场景信息</returns> /// <returns>场景信息</returns>
public static SceneInfoModel GetSceneInfo(this PageModelBase pageBase) public static SceneInfoModel GetSceneInfo(this PageModelBase pageBase)
{ {
...@@ -32,17 +32,31 @@ namespace VIZ.Package.Domain ...@@ -32,17 +32,31 @@ namespace VIZ.Package.Domain
} }
} }
/// <summary> /// <summary>
/// 获取场景父级 /// 获取场景父级
/// </summary> /// </summary>
/// <param name="pageBase">场景父级</param> /// <param name="pageBase">页模型基类</param>
/// <returns>场景父级</returns> /// <returns>场景父级</returns>
public static string GetSceneParent(this PageModelBase pageBase) public static string GetSceneParent(this PageModelBase pageBase)
{ {
string parent = ApplicationDomainEx.CurrentPage.ScenePath.Substring(0, ApplicationDomainEx.CurrentPage.ScenePath.LastIndexOf('/')); string parent = ApplicationDomainEx.CurrentPage.ScenePath.Substring(0, ApplicationDomainEx.CurrentPage.ScenePath.LastIndexOf('/'));
return parent; return parent;
} }
/// <summary>
/// 获取模板ID或页ID
/// </summary>
/// <param name="pageBase">页模型基类</param>
/// <returns>模板ID或页ID</returns>
public static Guid GetTemplateIdOrPageId(this PageModelBase pageBase)
{
if (pageBase is PageModel page)
return page.PageID;
if (pageBase is PageTemplateModel template)
return template.TemplateID;
return Guid.Empty;
}
} }
} }
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
<Compile Include="ApplicationDomainEx.cs" /> <Compile Include="ApplicationDomainEx.cs" />
<Compile Include="Core\GridColumnControlFieldDefinition.cs" /> <Compile Include="Core\GridColumnControlFieldDefinition.cs" />
<Compile Include="Core\GridColumnDefinition.cs" /> <Compile Include="Core\GridColumnDefinition.cs" />
<Compile Include="Core\GridColumnScrollElementFieldDefinition.cs" />
<Compile Include="Core\IHotkeySupport.cs" /> <Compile Include="Core\IHotkeySupport.cs" />
<Compile Include="Enum\ConnGroupStatus.cs" /> <Compile Include="Enum\ConnGroupStatus.cs" />
<Compile Include="Enum\MenuItemType.cs" /> <Compile Include="Enum\MenuItemType.cs" />
......
...@@ -44,7 +44,7 @@ namespace VIZ.Package.Module ...@@ -44,7 +44,7 @@ namespace VIZ.Package.Module
/// <summary> /// <summary>
/// 值改变时触发 /// 值改变时触发
/// </summary> /// </summary>
private void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e) protected virtual void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{ {
// 是否需要发送至预览 // 是否需要发送至预览
if (!this.IsSendToPreview) if (!this.IsSendToPreview)
......
...@@ -54,7 +54,7 @@ namespace VIZ.Package.Module ...@@ -54,7 +54,7 @@ namespace VIZ.Package.Module
/// <summary> /// <summary>
/// 值改变时触发 /// 值改变时触发
/// </summary> /// </summary>
private void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e) protected virtual void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{ {
// 是否需要发送至预览 // 是否需要发送至预览
if (!this.IsSendToPreview) if (!this.IsSendToPreview)
......
...@@ -44,7 +44,7 @@ namespace VIZ.Package.Module ...@@ -44,7 +44,7 @@ namespace VIZ.Package.Module
/// <summary> /// <summary>
/// 值改变时触发 /// 值改变时触发
/// </summary> /// </summary>
private void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e) protected virtual void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{ {
// 是否需要发送至预览 // 是否需要发送至预览
if (!this.IsSendToPreview) if (!this.IsSendToPreview)
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Package.Domain;
namespace VIZ.Package.Module
{
/// <summary>
/// 图片底飞单元格编辑
/// </summary>
public class ImageScrollElementCellEdit : ImageListCellEdit
{
/// <summary>
/// 值改变时触发
/// </summary>
protected override void EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
// 是否需要发送至预览
if (!this.IsSendToPreview)
return;
// 预览连接不存在
if (ApplicationDomainEx.PreviewConn == null)
return;
DevExpress.Xpf.Grid.EditGridCellData cellData = this.DataContext as DevExpress.Xpf.Grid.EditGridCellData;
if (cellData == null)
return;
GridColumnControlFieldDefinition columnDefinition = cellData.Column.DataContext as GridColumnControlFieldDefinition;
if (columnDefinition == null)
return;
// 设置值
IDictionary<string, object> dic = cellData.Row as IDictionary<string, object>;
dic[columnDefinition.FieldName] = e.NewValue?.ToString() ?? string.Empty;
// 向Viz发送指令
//this.VizCommandControlObjectService.SetControlObjectListValue(
// ApplicationDomainEx.PreviewConn,
// columnDefinition.ControlObject.TreeNodePath,
// columnDefinition.ControlField.FieldIdentifier,
// cellData.RowData.RowHandle.Value,
// columnDefinition.FieldName,
// e.NewValue?.ToString() ?? string.Empty);
}
}
}
using DevExpress.Xpf.Editors;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Package.Domain;
namespace VIZ.Package.Module
{
/// <summary>
/// 富文本底飞单元格编辑
/// </summary>
public class RichTextScrollElementCellEdit : RichTextListCellEdit
{
/// <summary>
/// 值改变时触发
/// </summary>
protected override void EditValueChanged(object sender, EditValueChangedEventArgs e)
{
// 是否需要发送至预览
if (!this.IsSendToPreview)
return;
// 预览连接不存在
if (ApplicationDomainEx.PreviewConn == null)
return;
DevExpress.Xpf.Grid.EditGridCellData cellData = this.DataContext as DevExpress.Xpf.Grid.EditGridCellData;
if (cellData == null)
return;
GridColumnControlFieldDefinition columnDefinition = cellData.Column.DataContext as GridColumnControlFieldDefinition;
if (columnDefinition == null)
return;
string richText = $"{RICH_TEXT_LEFT}{e.NewValue?.ToString() ?? string.Empty}{RICH_TEXT_RIGHT}";
// 设置值
IDictionary<string, object> dic = cellData.Row as IDictionary<string, object>;
dic[columnDefinition.FieldName] = richText;
// 向Viz发送指令
//this.VizCommandControlObjectService.SetControlObjectListValue(
// ApplicationDomainEx.PreviewConn,
// columnDefinition.ControlObject.TreeNodePath,
// columnDefinition.ControlField.FieldIdentifier,
// cellData.RowData.RowHandle.Value,
// columnDefinition.FieldName,
// richText);
}
}
}
using DevExpress.Xpf.Editors;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Package.Domain;
namespace VIZ.Package.Module
{
/// <summary>
///
/// </summary>
public class TextScrollElementCellEdit : TextListCellEdit
{
/// <summary>
/// 值改变时触发
/// </summary>
protected override void EditValueChanged(object sender, EditValueChangedEventArgs e)
{
// 是否需要发送至预览
if (!this.IsSendToPreview)
return;
// 预览连接不存在
if (ApplicationDomainEx.PreviewConn == null)
return;
DevExpress.Xpf.Grid.EditGridCellData cellData = this.DataContext as DevExpress.Xpf.Grid.EditGridCellData;
if (cellData == null)
return;
GridColumnControlFieldDefinition columnDefinition = cellData.Column.DataContext as GridColumnControlFieldDefinition;
if (columnDefinition == null)
return;
// 设置值
IDictionary<string, object> dic = cellData.Row as IDictionary<string, object>;
dic[columnDefinition.FieldName] = e.NewValue?.ToString() ?? string.Empty;
// 向Viz发送指令
//this.VizCommandControlObjectService.SetControlObjectListValue(
// ApplicationDomainEx.PreviewConn,
// columnDefinition.ControlObject.TreeNodePath,
// columnDefinition.ControlField.FieldIdentifier,
// cellData.RowData.RowHandle.Value,
// columnDefinition.FieldName,
// e.NewValue?.ToString() ?? string.Empty);
}
}
}
using DevExpress.Xpf.Grid;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using VIZ.Package.Domain;
using VIZ.Package.Storage;
namespace VIZ.Package.Module
{
/// <summary>
/// 底飞编辑面板单元格模板选择器
/// </summary>
public class ScrollElementEditPanelCellTemplateSelector : DataTemplateSelector
{
/// <summary>
/// 文本模板
/// </summary>
public DataTemplate TextDataTemplate { get; set; }
/// <summary>
/// 富文本模板
/// </summary>
public DataTemplate RichTextDataTemplate { get; set; }
/// <summary>
/// 图片模板
/// </summary>
public DataTemplate ImageDataTemplate { get; set; }
/// <summary>
/// 筛选模板
/// </summary>
/// <param name="item">项</param>
/// <param name="container">容器</param>
/// <returns>数据模板</returns>
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
GridCellData data = (GridCellData)item;
GridColumnScrollElementFieldDefinition definition = data.Column.DataContext as GridColumnScrollElementFieldDefinition;
if (definition == null)
return null;
switch (definition.Type)
{
case VizControlFieldType.none: return null;
case VizControlFieldType.text: return this.TextDataTemplate;
case VizControlFieldType.richtext: return this.RichTextDataTemplate;
case VizControlFieldType.image: return this.ImageDataTemplate;
default: return null;
}
}
}
}
\ No newline at end of file
...@@ -17,19 +17,71 @@ ...@@ -17,19 +17,71 @@
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="800"> d:DesignHeight="400" d:DesignWidth="800">
<UserControl.Resources> <UserControl.Resources>
<fcore:Bitmap2ImageSourceConverter x:Key="Bitmap2ImageSourceConverter"></fcore:Bitmap2ImageSourceConverter>
</UserControl.Resources>
<!-- 行号转化器 -->
<resource:RowHandleConverter x:Key="RowHandleConverter"></resource:RowHandleConverter>
<!-- 富文本转文本 -->
<resource:RichText2TextConverter x:Key="RichText2TextConverter"></resource:RichText2TextConverter>
<!-- 单元格编辑模板选择器 -->
<local:ScrollElementEditPanelCellTemplateSelector x:Key="CellTemplateSelector">
<!-- 富文本 -->
<local:ScrollElementEditPanelCellTemplateSelector.RichTextDataTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value,Converter={StaticResource RichText2TextConverter},Mode=OneWay}" Margin="3,0,3,0"
TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" VerticalAlignment="Center"></TextBlock>
</DataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector.RichTextDataTemplate>
<!-- 图片 -->
<local:ScrollElementEditPanelCellTemplateSelector.ImageDataTemplate>
<DataTemplate>
<local:ImageListCellEdit></local:ImageListCellEdit>
</DataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector.ImageDataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector>
<!-- 单元格编辑模板选择器 -->
<local:ScrollElementEditPanelCellTemplateSelector x:Key="CellEditTemplateSelector">
<!-- 文本 -->
<local:ScrollElementEditPanelCellTemplateSelector.TextDataTemplate>
<DataTemplate>
<local:TextListCellEdit></local:TextListCellEdit>
</DataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector.TextDataTemplate>
<!-- 富文本 -->
<local:ScrollElementEditPanelCellTemplateSelector.RichTextDataTemplate>
<DataTemplate>
<local:RichTextScrollElementCellEdit></local:RichTextScrollElementCellEdit>
</DataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector.RichTextDataTemplate>
</local:ScrollElementEditPanelCellTemplateSelector>
<!-- 列定义模板 -->
<DataTemplate x:Key="ColumnTemplate">
<ContentControl>
<dxg:GridColumn FieldName="{Binding FieldName}"
MinWidth="320" Width="Auto"
Header="{Binding Header}" ReadOnly="{Binding ReadOnly}"
CellTemplateSelector="{StaticResource CellTemplateSelector}"
CellEditTemplateSelector="{StaticResource CellEditTemplateSelector}"
AllowEditing="{Binding AllowEditing}"
AllowResizing="True"
AllowSorting="False" AllowColumnFiltering="False"/>
</ContentControl>
</DataTemplate>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" AllowDrop="True"> <Grid VerticalAlignment="Stretch" AllowDrop="True">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition> <RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- 模板 --> <!-- 模板 -->
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="60"></ColumnDefinition>
<ColumnDefinition Width="300"></ColumnDefinition> <ColumnDefinition Width="300"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
...@@ -43,6 +95,36 @@ ...@@ -43,6 +95,36 @@
</Grid> </Grid>
<!-- 数据 --> <!-- 数据 -->
<dxg:GridControl ItemsSource="{Binding Path=ItemsSource}" ShowBorder="True" Grid.Row="1" AllowDrop="True"
ColumnsSource="{Binding Path=Columns}" SelectionMode="Cell" Margin="10"
SelectedItem="{Binding Path=SelectedValue}"
ColumnGeneratorTemplate="{StaticResource ColumnTemplate}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="SelectionChanged" PassEventArgsToCommand="True" Command="{Binding Path=SelectionChangedCommand}"></dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
<dxg:GridControl.ContextMenu>
<ContextMenu>
<MenuItem Header="添加" Command="{Binding Path=PlacementTarget.DataContext.AddCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="删除" Command="{Binding Path=PlacementTarget.DataContext.RemoveCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
</ContextMenu>
</dxg:GridControl.ContextMenu>
<dxg:GridControl.View>
<dxg:TableView x:Name="tabView" AllowEditing="True" ShowIndicator="False"
IsColumnMenuEnabled="False"
NavigationStyle="Cell" EditorShowMode="MouseDown" ShowVerticalLines="True"
ShowHorizontalLines="True"
AlternateRowBackground="#05ffffff"
ShowGroupPanel="False" RowMinHeight="24"
AllowDrop="True"
ShowBandsPanel="False"
ShowTotalSummary="False"
ShowFixedTotalSummary="False"
ShowDragDropHint="False"
ShowTargetInfoInDragDropHint="false">
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid> </Grid>
</UserControl> </UserControl>
...@@ -25,6 +25,11 @@ namespace VIZ.Package.Module ...@@ -25,6 +25,11 @@ namespace VIZ.Package.Module
/// </summary> /// </summary>
private readonly static ILog log = LogManager.GetLogger(typeof(ScrollElementsEditPanelModel)); private readonly static ILog log = LogManager.GetLogger(typeof(ScrollElementsEditPanelModel));
/// <summary>
/// 支持的控制字段类型
/// </summary>
private readonly static List<VizControlFieldType> SUPPORT_CONTROL_FIELD_TYPE = new List<VizControlFieldType> { VizControlFieldType.text, VizControlFieldType.richtext, VizControlFieldType.image };
public ScrollElementsEditPanelModel() public ScrollElementsEditPanelModel()
{ {
// 初始化命令 // 初始化命令
...@@ -37,9 +42,10 @@ namespace VIZ.Package.Module ...@@ -37,9 +42,10 @@ namespace VIZ.Package.Module
private void InitCommand() private void InitCommand()
{ {
this.ApplyTemplateCommand = new VCommand(this.ApplyTemplate); this.ApplyTemplateCommand = new VCommand(this.ApplyTemplate);
this.AddCommand = new VCommand(this.Add);
this.RemoveCommand = new VCommand(this.Remove);
} }
// ============================================================ // ============================================================
// Service & Controller // Service & Controller
// ============================================================ // ============================================================
...@@ -54,28 +60,14 @@ namespace VIZ.Package.Module ...@@ -54,28 +60,14 @@ namespace VIZ.Package.Module
/// </summary> /// </summary>
private VizCommandControlObjectService vizCommandControlObjectService = new VizCommandControlObjectService(); private VizCommandControlObjectService vizCommandControlObjectService = new VizCommandControlObjectService();
// ============================================================
// Property
// ============================================================
#region EditValue -- 编辑值
private string editValue;
/// <summary> /// <summary>
/// 编辑值 /// 底飞服务
/// </summary> /// </summary>
public string EditValue private ScrollElementService scrollElementService = new ScrollElementService();
{
get { return editValue; }
set
{
editValue = value;
this.RaisePropertyChanged(nameof(EditValue));
this.OnEditValueChanged();
}
}
#endregion // ============================================================
// Property
// ============================================================
#region SceneTemplateModels -- 场景模板集合 #region SceneTemplateModels -- 场景模板集合
...@@ -105,6 +97,62 @@ namespace VIZ.Package.Module ...@@ -105,6 +97,62 @@ namespace VIZ.Package.Module
#endregion #endregion
#region Columns -- 列信息集合
private ObservableCollection<GridColumnScrollElementFieldDefinition> columns;
/// <summary>
/// 列信息集合
/// </summary>
public ObservableCollection<GridColumnScrollElementFieldDefinition> Columns
{
get { return columns; }
set { columns = value; this.RaisePropertyChanged(nameof(Columns)); }
}
#endregion
#region ItemsSource -- 数据源
private ObservableCollection<ExpandoObject> itemsSource;
/// <summary>
/// 数据源
/// </summary>
public ObservableCollection<ExpandoObject> ItemsSource
{
get { return itemsSource; }
set { itemsSource = value; this.RaisePropertyChanged(nameof(ItemsSource)); }
}
#endregion
#region SelectedValue -- 当前选中的数据项
private ExpandoObject selectedValue;
/// <summary>
/// 当前选中的数据项
/// </summary>
public ExpandoObject SelectedValue
{
get { return selectedValue; }
set { selectedValue = value; this.RaisePropertyChanged(nameof(SelectedValue)); }
}
#endregion
#region ScrollElementPackage -- 底飞数据包
private ScrollElementPackageEntity scrollElementPackage;
/// <summary>
/// 底飞数据包
/// </summary>
public ScrollElementPackageEntity ScrollElementPackage
{
get { return scrollElementPackage; }
set { scrollElementPackage = value; this.RaisePropertyChanged(nameof(ScrollElementPackage)); }
}
#endregion
// ============================================================ // ============================================================
// Command // Command
// ============================================================ // ============================================================
...@@ -132,8 +180,58 @@ namespace VIZ.Package.Module ...@@ -132,8 +180,58 @@ namespace VIZ.Package.Module
this.vizCommandControlObjectService.UpdateControlObjectModel(controlObject, entity); this.vizCommandControlObjectService.UpdateControlObjectModel(controlObject, entity);
// 只处理文本与图片类型 // 只处理文本与图片类型
List<ControlFieldNodeModel> fields = controlObject.AllFiledNodes.Where(p => p.Type == VizControlFieldType.text || p.Type == VizControlFieldType.image).ToList(); List<ControlFieldNodeModel> scrollElementFields = controlObject.AllFiledNodes.Where(p => SUPPORT_CONTROL_FIELD_TYPE.Contains(p.Type)).ToList();
// 保存底飞控制字段
this.ScrollElementPackage = this.scrollElementService.GetScrollElementPackage(ApplicationDomainEx.CurrentPage, this.SelectedSceneTemplateModel, this.ControlField, scrollElementFields);
this.Columns = this.scrollElementService.GetDynamicColumns(ApplicationDomainEx.CurrentPage, controlObject, scrollElementFields).ToObservableCollection();
this.ItemsSource = this.scrollElementService.GetDynamicList(scrollElementFields, this.ControlField.Value).ToObservableCollection();
}
#endregion
#region AddCommand -- 添加项命令
/// <summary>
/// 添加项命令
/// </summary>
public VCommand AddCommand { get; set; }
/// <summary>
/// 添加
/// </summary>
private void Add()
{
IDictionary<string, object> row = new ExpandoObject();
if (this.Columns != null)
{
foreach (GridColumnScrollElementFieldDefinition field in this.Columns)
{
row[field.FieldName] = null;
}
}
this.ItemsSource.Add(row as ExpandoObject);
}
#endregion
#region RemoveCommand -- 移除命令
/// <summary>
/// 移除命令
/// </summary>
public VCommand RemoveCommand { get; set; }
/// <summary>
/// 移除
/// </summary>
private void Remove()
{
if (this.SelectedValue == null)
return;
this.ItemsSource.Remove(this.SelectedValue);
} }
#endregion #endregion
...@@ -157,12 +255,25 @@ namespace VIZ.Package.Module ...@@ -157,12 +255,25 @@ namespace VIZ.Package.Module
this.IsSendToPreview = false; this.IsSendToPreview = false;
string scrollElementValue = controlField?.Value?.ToString();
this.TryUpdateScrollElementPackage();
IPageTemplateService service = ApplicationDomainEx.ServiceManager.GetService<IPageTemplateService>(ViewServiceKeys.PAGE_TEMPLATE_SERVICE); IPageTemplateService service = ApplicationDomainEx.ServiceManager.GetService<IPageTemplateService>(ViewServiceKeys.PAGE_TEMPLATE_SERVICE);
this.SceneTemplateModels = service.SceneTemplateModels.Where(p => p.TransitionLogic && p.ScenePath != ApplicationDomainEx.CurrentPage?.ScenePath).ToObservableCollection(); this.SceneTemplateModels = service.SceneTemplateModels.Where(p => p.ScenePath != ApplicationDomainEx.CurrentPage?.ScenePath).ToObservableCollection();
this.SelectedSceneTemplateModel = null; if (this.ScrollElementPackage != null)
{
this.SelectedSceneTemplateModel = this.SceneTemplateModels.FirstOrDefault(p => p.ScenePath == this.ScrollElementPackage.TemplateScenePath);
}
this.EditValue = controlField?.Value?.ToString(); // 只处理文本与图片类型
List<ControlFieldNodeModel> fields = new List<ControlFieldNodeModel>();
foreach (var field in this.ScrollElementPackage.TemplateFields)
{
fields.Add(this.vizCommandControlObjectService.CreateControlFieldNodeModeFromEntity(field));
}
this.Columns = this.scrollElementService.GetDynamicColumns(ApplicationDomainEx.CurrentPage, controlObject, fields).ToObservableCollection();
this.ItemsSource = this.scrollElementService.GetDynamicList(fields, this.ControlField.Value).ToObservableCollection();
this.IsSendToPreview = true; this.IsSendToPreview = true;
} }
...@@ -181,7 +292,27 @@ namespace VIZ.Package.Module ...@@ -181,7 +292,27 @@ namespace VIZ.Package.Module
IDictionary<string, object> dic = row as IDictionary<string, object>; IDictionary<string, object> dic = row as IDictionary<string, object>;
this.IsSendToPreview = false; this.IsSendToPreview = false;
this.EditValue = dic?[columnDefinition.FieldName]?.ToString();
string scrollElementValue = dic?[columnDefinition.FieldName]?.ToString();
this.TryUpdateScrollElementPackage();
IPageTemplateService service = ApplicationDomainEx.ServiceManager.GetService<IPageTemplateService>(ViewServiceKeys.PAGE_TEMPLATE_SERVICE);
this.SceneTemplateModels = service.SceneTemplateModels.Where(p => p.ScenePath != ApplicationDomainEx.CurrentPage?.ScenePath).ToObservableCollection();
if (this.ScrollElementPackage != null)
{
this.SelectedSceneTemplateModel = this.SceneTemplateModels.FirstOrDefault(p => p.ScenePath == this.ScrollElementPackage.TemplateScenePath);
}
// 只处理文本与图片类型
List<ControlFieldNodeModel> fields = new List<ControlFieldNodeModel>();
foreach (var field in this.ScrollElementPackage.TemplateFields)
{
fields.Add(this.vizCommandControlObjectService.CreateControlFieldNodeModeFromEntity(field));
}
this.Columns = this.scrollElementService.GetDynamicColumns(ApplicationDomainEx.CurrentPage, this.ControlObject, fields).ToObservableCollection();
this.ItemsSource = this.scrollElementService.GetDynamicList(fields, this.ControlField.Value).ToObservableCollection();
this.IsSendToPreview = true; this.IsSendToPreview = true;
} }
...@@ -191,7 +322,9 @@ namespace VIZ.Package.Module ...@@ -191,7 +322,9 @@ namespace VIZ.Package.Module
/// <returns>字段值</returns> /// <returns>字段值</returns>
public override string GetFieldValue() public override string GetFieldValue()
{ {
return this.EditValue; string value = this.scrollElementService.GetScrollElementValue(this.ScrollElementPackage.TemplateScenePath, this.ScrollElementPackage.TemplateFields, this.ItemsSource, VizScrollElementRootTag.entry);
return value;
} }
// ============================================================ // ============================================================
...@@ -199,57 +332,18 @@ namespace VIZ.Package.Module ...@@ -199,57 +332,18 @@ namespace VIZ.Package.Module
// ============================================================ // ============================================================
/// <summary> /// <summary>
/// 值改变时触发 /// 尝试更新底飞元素数据包
/// </summary> /// </summary>
private void OnEditValueChanged() private void TryUpdateScrollElementPackage()
{ {
// 不需要向预览发送值 Guid teplateOrPageId = ApplicationDomainEx.CurrentPage.GetTemplateIdOrPageId();
if (!this.IsSendToPreview)
return;
// 没有预览连接
if (ApplicationDomainEx.PreviewConn == null)
return;
// 没有控制对象或控制字段 // 当前拥有模板且模板与当前选择的页和控制字段匹配则不处理
if (this.ControlObject == null || this.ControlField == null) if (this.ScrollElementPackage != null && this.ScrollElementPackage.TemplateOrPageID == teplateOrPageId &&
this.ScrollElementPackage.FieldIdentifier == this.ControlField.FieldIdentifier)
return; return;
// 正常模式编辑 this.ScrollElementPackage = this.scrollElementService.GetScrollElementPackageFromDB(ApplicationDomainEx.CurrentPage, this.ControlField);
if (this.FieldEditMode == FieldEditMode.Normal)
{
this.ControlField.Value = this.EditValue;
if (!this.ControlField.IsCustom)
{
this.VizCommandControlObjectService.SetControlObjectValue(
ApplicationDomainEx.PreviewConn,
this.ControlObject.TreeNodePath,
this.ControlField.FieldIdentifier,
this.ControlField.Value);
}
else
{
this.VizCommandControlObjectService.SetCustomControlFieldValue(ApplicationDomainEx.PreviewConn, new List<ControlFieldNodeModel> { this.ControlField });
}
return;
}
// 没有列信息或行数据
if (this.ColumnDefinition == null || this.Row == null)
return;
// 动态模式编辑
if (this.FieldEditMode == FieldEditMode.Dynamic)
{
IDictionary<string, object> dic = this.Row as IDictionary<string, object>;
dic[this.ColumnDefinition.FieldName] = this.EditValue;
this.ListCellEdit.UpdateEditValue(this.ColumnDefinition, this.RowHandle, this.Row);
return;
}
} }
} }
} }
...@@ -225,7 +225,7 @@ namespace VIZ.Package.Module ...@@ -225,7 +225,7 @@ namespace VIZ.Package.Module
/// </summary> /// </summary>
public void TryUpdateControlFieldListValue() public void TryUpdateControlFieldListValue()
{ {
if (this.SelectedControlField == null || this.SelectedControlField.Type != VizControlFieldType.list) if (this.SelectedControlField == null || this.SelectedControlField.Type != VizControlFieldType.list && this.SelectedControlField.Type != VizControlFieldType.scroll_elements)
return; return;
IFieldEditService service = ApplicationDomainEx.ServiceManager.GetService<IFieldEditService>(ViewServiceKeys.FIELD_EDIT_SERVICE); IFieldEditService service = ApplicationDomainEx.ServiceManager.GetService<IFieldEditService>(ViewServiceKeys.FIELD_EDIT_SERVICE);
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<!-- 系统版本 --> <!-- 系统版本 -->
<TextBlock Text="系统版本:" VerticalAlignment="Center" HorizontalAlignment="Right" <TextBlock Text="系统版本:" VerticalAlignment="Center" HorizontalAlignment="Right"
Grid.Row="1" Grid.Column="0" Margin="0,0,10,0"></TextBlock> Grid.Row="1" Grid.Column="0" Margin="0,0,10,0"></TextBlock>
<TextBlock Text="V1.1.0.03141048_beta" VerticalAlignment="Center" HorizontalAlignment="Left" <TextBlock Text="V1.1.0.03171405_beta" VerticalAlignment="Center" HorizontalAlignment="Left"
Grid.Row="1" Grid.Column="1"></TextBlock> Grid.Row="1" Grid.Column="1"></TextBlock>
</Grid> </Grid>
</dx:ThemedWindow> </dx:ThemedWindow>
...@@ -115,6 +115,10 @@ ...@@ -115,6 +115,10 @@
<Compile Include="ControlObject\FieldEdit\Edit\ListEdit\CellEdit\FontListCellEdit.xaml.cs"> <Compile Include="ControlObject\FieldEdit\Edit\ListEdit\CellEdit\FontListCellEdit.xaml.cs">
<DependentUpon>FontListCellEdit.xaml</DependentUpon> <DependentUpon>FontListCellEdit.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\CellEdit\ImageScrollElementCellEdit.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\CellEdit\RichTextScrollElementCellEdit.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\CellEdit\TextScrollElementCellEdit.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\ScrollElementEditPanelCellTemplateSelector.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\ScrollElementsEditPanel.xaml.cs"> <Compile Include="ControlObject\FieldEdit\Edit\ScrollElementsEdit\ScrollElementsEditPanel.xaml.cs">
<DependentUpon>ScrollElementsEditPanel.xaml</DependentUpon> <DependentUpon>ScrollElementsEditPanel.xaml</DependentUpon>
</Compile> </Compile>
......
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using VIZ.Package.Domain;
using VIZ.Package.Storage;
namespace VIZ.Package.Service
{
/// <summary>
/// 底飞服务
/// </summary>
public class ScrollElementService
{
/// <summary>
/// Viz命令控制对象服务
/// </summary>
private VizCommandControlObjectService vizCommandControlObjectService = new VizCommandControlObjectService();
/// <summary>
/// 保存底飞数据包
/// </summary>
/// <param name="pageBase">底飞页</param>
/// <param name="templatePageBase">底飞选用的模板页</param>
/// <param name="templatePageBaseScrollElementField">底飞页ScrollElement字段</param>
/// <param name="scrollElementFields">选用的模板页字段集合</param>
/// <returns>底飞数据包</returns>
public ScrollElementPackageEntity GetScrollElementPackage(PageModelBase pageBase, PageModelBase templatePageBase, ControlFieldNodeModel templatePageBaseScrollElementField, List<ControlFieldNodeModel> scrollElementFields)
{
ScrollElementPackageEntity package = new ScrollElementPackageEntity();
package.TemplateOrPageID = pageBase.GetTemplateIdOrPageId();
package.TemplateScenePath = templatePageBase.ScenePath;
package.FieldIdentifier = templatePageBaseScrollElementField.FieldIdentifier;
if (scrollElementFields != null && scrollElementFields.Count != 0)
{
foreach (ControlFieldNodeModel field in scrollElementFields)
{
ControlFieldEntity entity = new ControlFieldEntity();
entity.PageID = package.TemplateOrPageID;
entity.FieldIdentifier = field.FieldIdentifier;
entity.Value = field.Value;
entity.Type = field.Type;
entity.FieldDetail = field.FieldDetail;
entity.IsCustom = field.IsCustom;
package.TemplateFields.Add(entity);
}
}
return package;
}
/// <summary>
/// 保存底飞数据包
/// </summary>
/// <param name="package">底飞数据包</param>
public void SaveScrollElementPackageToDB(ScrollElementPackageEntity package)
{
// 删除
ApplicationDomainEx.ProjectDbContext.ScrollElementPackage.DeleteMany(p => p.TemplateOrPageID == package.TemplateOrPageID && p.FieldIdentifier == package.FieldIdentifier);
// 插入
ApplicationDomainEx.ProjectDbContext.ScrollElementPackage.Insert(package);
}
/// <summary>
/// 获取底飞数据包
/// </summary>
/// <param name="pageBase">底飞页</param>
/// <param name="templatePageBaseScrollElementField">底飞页ScrollElement字段</param>
/// <returns></returns>
public ScrollElementPackageEntity GetScrollElementPackageFromDB(PageModelBase pageBase, ControlFieldNodeModel templatePageBaseScrollElementField)
{
Guid templateOrPageId = pageBase.GetTemplateIdOrPageId();
ScrollElementPackageEntity package = ApplicationDomainEx.ProjectDbContext.ScrollElementPackage.Find(p => p.TemplateOrPageID == templateOrPageId &&
p.FieldIdentifier == templatePageBaseScrollElementField.FieldIdentifier).FirstOrDefault();
return package;
}
/// <summary>
/// 获取动态对象列信息
/// </summary>
/// <param name="pageBase">页或模板</param>
/// <param name="controlObject">控制对象</param>
/// <param name="scrollElementFields">选用的模板页字段集合</param>
/// <returns>动态对象列信息</returns>
public List<GridColumnScrollElementFieldDefinition> GetDynamicColumns(PageModelBase pageBase, ControlObjectModel controlObject, List<ControlFieldNodeModel> scrollElementFields)
{
List<GridColumnScrollElementFieldDefinition> columns = new List<GridColumnScrollElementFieldDefinition>();
if (pageBase == null || scrollElementFields == null || scrollElementFields.Count == 0)
return columns;
foreach (ControlFieldNodeModel field in scrollElementFields)
{
GridColumnScrollElementFieldDefinition column = new GridColumnScrollElementFieldDefinition();
column.Header = (field.FieldIdentifier == field.Description) ? field.FieldIdentifier : $"({field.Description}){field.FieldIdentifier}";
column.FieldName = field.FieldIdentifier;
column.AllowEditing = !VizCommandControlObjectService.ALLOW_EDITING_FALSE_TYPES.Contains(field.Type);
column.PageBase = pageBase;
column.ControlObject = controlObject;
column.ControlField = field;
column.Type = field.Type;
columns.Add(column);
}
return columns;
}
/// <summary>
/// 获取动态对象列表
/// </summary>
/// <param name="scrollElementFields">选用的模板页字段集合</param>
/// <param name="scrollElementValue">底飞元素值</param>
/// <returns>动态对象列表</returns>
public List<ExpandoObject> GetDynamicList(List<ControlFieldNodeModel> scrollElementFields, string scrollElementValue)
{
List<ExpandoObject> list = new List<ExpandoObject>();
if (scrollElementFields == null || scrollElementFields.Count == 0 || string.IsNullOrWhiteSpace(scrollElementValue))
return list;
ControlObject_Entry_Node entry = new ControlObject_Entry_Node();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(scrollElementValue)))
{
XElement element = XElement.Load(ms);
entry.FromXmlElement(element);
}
for (int i = 0; i < entry.Elements.Count; i++)
{
ControlObject_Element_Node row = entry.Elements[i];
IDictionary<string, object> item = new ExpandoObject();
ControlObject_Entry_Node data = row.Entrys.FirstOrDefault(p => p.Name == "data");
if (data == null)
continue;
foreach (ControlObject_Entry_Node cell in data.Entrys)
{
if (string.IsNullOrWhiteSpace(cell.Name))
continue;
item[cell.Name] = cell.Value;
}
list.Add(item as ExpandoObject);
}
return list;
}
/// <summary>
/// 获取底飞值
/// </summary>
/// <param name="templateScenePath">模板场景路径</param>
/// <param name="templateFields">模板场景字段信息</param>
/// <param name="items"></param>
/// <param name="tag">根节点标志</param>
/// <returns></returns>
public string GetScrollElementValue(string templateScenePath, List<ControlFieldEntity> templateFields, IList<ExpandoObject> items, VizScrollElementRootTag tag)
{
XElement root = new XElement(tag.ToString());
if (string.IsNullOrWhiteSpace(templateScenePath) || templateFields == null || templateFields.Count == 0 || items == null || items.Count == 0)
return root.ToString(SaveOptions.DisableFormatting);
for (int i = 0; i < items.Count; i++)
{
IDictionary<string, object> item = items[i];
ControlObject_Element_Node element = new ControlObject_Element_Node();
element.Complete = true;
element.Name = i.ToString();
element.Scene = templateScenePath;
// viz
ControlObject_Entry_Node viz = new ControlObject_Entry_Node();
viz.Name = "viz";
viz.Entrys.Add(new ControlObject_Entry_Node { Name = "location" });
viz.Entrys.Add(new ControlObject_Entry_Node
{
Name = "front",
Entrys = { new ControlObject_Entry_Node { Name = "scene", Value = templateScenePath } }
});
viz.Entrys.Add(new ControlObject_Entry_Node { Name = "load", Value = "scene" });
viz.Entrys.Add(new ControlObject_Entry_Node { Name = "viz_layer" });
viz.Entrys.Add(new ControlObject_Entry_Node { Name = "use_all_directors", Value = "yes" });
element.Entrys.Add(viz);
// schema
ControlObject_Schema_Node schema = new ControlObject_Schema_Node();
foreach (ControlFieldEntity field in templateFields)
{
ControlFieldNodeModel fieldModel = this.vizCommandControlObjectService.CreateControlFieldNodeModeFromEntity(field);
ControlObject_Field_node field_node = new ControlObject_Field_node();
field_node.Name = fieldModel.FieldIdentifier;
field_node.Description = fieldModel.Description;
field_node.Type = field.Type.ToString().Replace("@", string.Empty);
field_node.Location = "";
schema.Fields.Add(field_node);
}
element.Schemas.Add(schema);
// data
ControlObject_Entry_Node data = new ControlObject_Entry_Node();
data.Name = "data";
foreach (var kv in item)
{
data.Entrys.Add(new ControlObject_Entry_Node { Name = kv.Key, Value = kv.Value?.ToString() });
}
element.Entrys.Add(data);
root.Add(element.ToXmlElement());
}
return root.ToString(SaveOptions.DisableFormatting);
}
}
}
...@@ -102,9 +102,11 @@ ...@@ -102,9 +102,11 @@
<Compile Include="DB\RecordLog\RecordLogService.cs" /> <Compile Include="DB\RecordLog\RecordLogService.cs" />
<Compile Include="DB\RecordLog\RecordLogWriter.cs" /> <Compile Include="DB\RecordLog\RecordLogWriter.cs" />
<Compile Include="DB\Registry\RegistryService.cs" /> <Compile Include="DB\Registry\RegistryService.cs" />
<Compile Include="DB\ScrollElement\ScrollElementService.cs" />
<Compile Include="Logic\Plugin\PluginService.cs" /> <Compile Include="Logic\Plugin\PluginService.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Viz\VizCommandControlObjectService.Custom.cs" /> <Compile Include="Viz\VizCommandControlObjectService.Custom.cs" />
<Compile Include="Viz\VizCommandElementService.cs" />
<Compile Include="Viz\VizControlObjectDownloadService.cs" /> <Compile Include="Viz\VizControlObjectDownloadService.cs" />
<Compile Include="Viz\GHResourceService.cs" /> <Compile Include="Viz\GHResourceService.cs" />
<Compile Include="Viz\GHService.cs" /> <Compile Include="Viz\GHService.cs" />
......
...@@ -30,7 +30,7 @@ namespace VIZ.Package.Service ...@@ -30,7 +30,7 @@ namespace VIZ.Package.Service
/// <remarks> /// <remarks>
/// 不启用编辑则可以直接在GridControl的单元格中直径进行值修改 /// 不启用编辑则可以直接在GridControl的单元格中直径进行值修改
/// </remarks> /// </remarks>
private static readonly List<VizControlFieldType> ALLOW_EDITING_FALSE_TYPES = new List<VizControlFieldType> public static readonly List<VizControlFieldType> ALLOW_EDITING_FALSE_TYPES = new List<VizControlFieldType>
{ {
VizControlFieldType.none, VizControlFieldType.none,
VizControlFieldType.boolean, VizControlFieldType.boolean,
...@@ -501,6 +501,35 @@ namespace VIZ.Package.Service ...@@ -501,6 +501,35 @@ namespace VIZ.Package.Service
conn.EndpointManager.Send(string.Format(VizEngineCommands.SCRIPT_INVOKE, ApplicationConstants.VIZ_COMMAND_CUSTOM_CONTROL_FIELD_SET, command)); conn.EndpointManager.Send(string.Format(VizEngineCommands.SCRIPT_INVOKE, ApplicationConstants.VIZ_COMMAND_CUSTOM_CONTROL_FIELD_SET, command));
} }
/// <summary>
/// 根据控制字段实体创建控制对象字段模型
/// </summary>
/// <param name="entity">控制字段实体</param>
/// <returns>控制对象字段模型</returns>
public ControlFieldNodeModel CreateControlFieldNodeModeFromEntity(ControlFieldEntity entity)
{
if (string.IsNullOrWhiteSpace(entity.FieldDetail))
return null;
string[] pars = entity.FieldDetail.Split(':');
string num = pars[1].Split('*').FirstOrDefault();
ControlFieldNodeModel node = new ControlFieldNodeModel();
node.FieldDetail = entity.FieldDetail;
node.FieldIdentifier = pars[0];
node.Num = num;
node.TypeSchema = pars[2];
node.Type = this.GetControlFieldType(node.TypeSchema);
node.Value = entity.Value;
if (pars.Length >= 7)
{
node.Description = pars[6];
}
return node;
}
/// <summary> /// <summary>
/// 获取控制字段类型 /// 获取控制字段类型
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.Package.Service
{
/// <summary>
/// Viz元素命令服务
/// </summary>
public class VizCommandElementService
{
}
}
...@@ -8,9 +8,9 @@ using System.Threading.Tasks; ...@@ -8,9 +8,9 @@ using System.Threading.Tasks;
namespace VIZ.Package.Storage namespace VIZ.Package.Storage
{ {
/// <summary> /// <summary>
/// 底飞字段值 /// 底飞数据包
/// </summary> /// </summary>
public class ScrollElementFieldValue public class ScrollElementPackageEntity
{ {
/// <summary> /// <summary>
/// 编号 /// 编号
...@@ -19,23 +19,23 @@ namespace VIZ.Package.Storage ...@@ -19,23 +19,23 @@ namespace VIZ.Package.Storage
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// 模板ID或者页ID /// 模板页ID
/// </summary> /// </summary>
public Guid TemplateOrPageID { get; set; } public Guid TemplateOrPageID { get; set; }
/// <summary> /// <summary>
/// 元素编号 /// 关联底飞字段
/// </summary> /// </summary>
public string ElementNum { get; set; } public string FieldIdentifier { get; set; }
/// <summary> /// <summary>
/// 字段名称 /// 模板场景路径
/// </summary> /// </summary>
public string FieldIdentifier { get; set; } public string TemplateScenePath { get; set; }
/// <summary> /// <summary>
/// 字段值 /// 模板字段
/// </summary> /// </summary>
public string Value { get; set; } public List<ControlFieldEntity> TemplateFields { get; set; } = new List<ControlFieldEntity>();
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.Package.Storage
{
/// <summary>
/// 底飞元素根节点标志
/// </summary>
public enum VizScrollElementRootTag
{
/// <summary>
/// 全值更新
/// </summary>
entry,
/// <summary>
/// 更新部分值
/// </summary>
update,
/// <summary>
/// 插入值
/// </summary>
insert
}
}
...@@ -40,8 +40,7 @@ namespace VIZ.Package.Storage ...@@ -40,8 +40,7 @@ namespace VIZ.Package.Storage
this.ControlField = this.Database.GetCollection<ControlFieldEntity>(); this.ControlField = this.Database.GetCollection<ControlFieldEntity>();
this.ControlObject = this.Database.GetCollection<ControlObjectEntity>(); this.ControlObject = this.Database.GetCollection<ControlObjectEntity>();
this.SceneThumbnailCache = this.Database.GetStorage<Guid>("_SceneThumbnailFiles", "_SceneThumbnailChunks"); this.SceneThumbnailCache = this.Database.GetStorage<Guid>("_SceneThumbnailFiles", "_SceneThumbnailChunks");
this.ScrollElementTemplateControlField = this.Database.GetCollection<ControlFieldEntity>("ScrollElementTemplate"); this.ScrollElementPackage = this.Database.GetCollection<ScrollElementPackageEntity>();
this.ScrollElementFieldValue = this.Database.GetCollection<ScrollElementFieldValue>();
} }
/// <summary> /// <summary>
...@@ -80,14 +79,9 @@ namespace VIZ.Package.Storage ...@@ -80,14 +79,9 @@ namespace VIZ.Package.Storage
public ILiteStorage<Guid> SceneThumbnailCache { get; private set; } public ILiteStorage<Guid> SceneThumbnailCache { get; private set; }
/// <summary> /// <summary>
/// 底飞模板字段 /// 底飞数据包
/// </summary> /// </summary>
public ILiteCollection<ControlFieldEntity> ScrollElementTemplateControlField { get; private set; } public ILiteCollection<ScrollElementPackageEntity> ScrollElementPackage { get; private set; }
/// <summary>
/// 底飞字段值
/// </summary>
public ILiteCollection<ScrollElementFieldValue> ScrollElementFieldValue { get; private set; }
/// <summary> /// <summary>
/// 销毁 /// 销毁
...@@ -100,8 +94,7 @@ namespace VIZ.Package.Storage ...@@ -100,8 +94,7 @@ namespace VIZ.Package.Storage
this.ControlField = null; this.ControlField = null;
this.ControlObject = null; this.ControlObject = null;
this.SceneThumbnailCache = null; this.SceneThumbnailCache = null;
this.ScrollElementTemplateControlField = null; this.ScrollElementPackage = null;
this.ScrollElementFieldValue = null;
this.Database?.Dispose(); this.Database?.Dispose();
} }
......
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
<Compile Include="Entity\Page\PageGroupEntity.cs" /> <Compile Include="Entity\Page\PageGroupEntity.cs" />
<Compile Include="Entity\Page\PageTemplateEntity.cs" /> <Compile Include="Entity\Page\PageTemplateEntity.cs" />
<Compile Include="Entity\Config\VizConfigEntity.cs" /> <Compile Include="Entity\Config\VizConfigEntity.cs" />
<Compile Include="Entity\ScrollElement\ScrollElementFieldValue.cs" /> <Compile Include="Entity\ScrollElement\ScrollElementPackageEntity.cs" />
<Compile Include="Enum\EngineFullType.cs" /> <Compile Include="Enum\EngineFullType.cs" />
<Compile Include="Enum\EngineType.cs" /> <Compile Include="Enum\EngineType.cs" />
<Compile Include="Enum\PageType.cs" /> <Compile Include="Enum\PageType.cs" />
...@@ -119,6 +119,7 @@ ...@@ -119,6 +119,7 @@
<Compile Include="Enum\VizLayer.cs" /> <Compile Include="Enum\VizLayer.cs" />
<Compile Include="Enum\EnginePreviewMode.cs" /> <Compile Include="Enum\EnginePreviewMode.cs" />
<Compile Include="Enum\VizScene.cs" /> <Compile Include="Enum\VizScene.cs" />
<Compile Include="Enum\VizScrollElementRootTag.cs" />
<Compile Include="Ini\LogConfig.cs" /> <Compile Include="Ini\LogConfig.cs" />
<Compile Include="Ini\VizConfig.cs" /> <Compile Include="Ini\VizConfig.cs" />
<Compile Include="LocalDbContext.cs" /> <Compile Include="LocalDbContext.cs" />
......
...@@ -14,6 +14,21 @@ namespace VIZ.Package.Storage ...@@ -14,6 +14,21 @@ namespace VIZ.Package.Storage
public class ControlObject_Element_Node : IXmlSerialize public class ControlObject_Element_Node : IXmlSerialize
{ {
/// <summary> /// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 是否完成
/// </summary>
public bool? Complete { get; set; }
/// <summary>
/// 关联场景
/// </summary>
public string Scene { get; set; }
/// <summary>
/// 描述 /// 描述
/// </summary> /// </summary>
public string Description { get; set; } public string Description { get; set; }
...@@ -24,12 +39,20 @@ namespace VIZ.Package.Storage ...@@ -24,12 +39,20 @@ namespace VIZ.Package.Storage
public List<ControlObject_Entry_Node> Entrys { get; set; } = new List<ControlObject_Entry_Node>(); public List<ControlObject_Entry_Node> Entrys { get; set; } = new List<ControlObject_Entry_Node>();
/// <summary> /// <summary>
/// 字段定义
/// </summary>
public List<ControlObject_Schema_Node> Schemas { get; set; } = new List<ControlObject_Schema_Node>();
/// <summary>
/// 从XElement节点获取数据 /// 从XElement节点获取数据
/// </summary> /// </summary>
/// <param name="element">XElement节点</param> /// <param name="element">XElement节点</param>
public void FromXmlElement(XElement element) public void FromXmlElement(XElement element)
{ {
this.Name = element.GetAttributeValue<string>("name");
this.Description = element.GetAttributeValue<string>("description"); this.Description = element.GetAttributeValue<string>("description");
this.Complete = element.GetAttributeValue<bool?>("complete");
this.Scene = element.GetAttributeValue<string>("scene");
foreach (var item in element.Elements("entry")) foreach (var item in element.Elements("entry"))
{ {
...@@ -38,6 +61,14 @@ namespace VIZ.Package.Storage ...@@ -38,6 +61,14 @@ namespace VIZ.Package.Storage
this.Entrys.Add(entry); this.Entrys.Add(entry);
} }
foreach (var item in element.Elements("schema"))
{
ControlObject_Schema_Node schema = new ControlObject_Schema_Node();
schema.FromXmlElement(item);
this.Schemas.Add(schema);
}
} }
/// <summary> /// <summary>
...@@ -46,10 +77,27 @@ namespace VIZ.Package.Storage ...@@ -46,10 +77,27 @@ namespace VIZ.Package.Storage
public XElement ToXmlElement() public XElement ToXmlElement()
{ {
XElement element = new XElement("element"); XElement element = new XElement("element");
element.SetAttributeValue("description", this.Description); element.SetAttributeValueIfValueNotNull("name", this.Name);
element.SetAttributeValueIfValueNotNull("description", this.Description);
element.SetAttributeValueIfValueNotNull("complete", this.Complete);
element.SetAttributeValueIfValueNotNull("scene", this.Scene);
foreach (var item in this.Entrys) foreach (var item in this.Entrys)
{ {
element.Add(item.ToXmlElement()); XElement entry = item.ToXmlElement();
if (entry == null)
continue;
element.Add(entry);
}
foreach (var item in this.Schemas)
{
XElement schema = item.ToXmlElement();
if (schema == null)
continue;
element.Add(schema);
} }
return element; return element;
......
...@@ -69,10 +69,7 @@ namespace VIZ.Package.Storage ...@@ -69,10 +69,7 @@ namespace VIZ.Package.Storage
public XElement ToXmlElement() public XElement ToXmlElement()
{ {
XElement entry = new XElement("entry"); XElement entry = new XElement("entry");
if (!string.IsNullOrWhiteSpace(this.Name)) entry.SetAttributeValueIfValueNotNull("name", this.Name);
{
entry.SetAttributeValue("name", this.Name);
}
if (this.Value != null) if (this.Value != null)
{ {
......
...@@ -30,6 +30,11 @@ namespace VIZ.Package.Storage ...@@ -30,6 +30,11 @@ namespace VIZ.Package.Storage
public string Description { get; set; } public string Description { get; set; }
/// <summary> /// <summary>
/// 位置
/// </summary>
public string Location { get; set; }
/// <summary>
/// 定义 /// 定义
/// </summary> /// </summary>
public ControlObject_Schema_Node Schema { get; set; } public ControlObject_Schema_Node Schema { get; set; }
...@@ -43,6 +48,7 @@ namespace VIZ.Package.Storage ...@@ -43,6 +48,7 @@ namespace VIZ.Package.Storage
this.Name = element.GetAttributeValue<string>("name"); this.Name = element.GetAttributeValue<string>("name");
this.Type = element.GetAttributeValue<string>("type"); this.Type = element.GetAttributeValue<string>("type");
this.Description = element.GetAttributeValue<string>("description"); this.Description = element.GetAttributeValue<string>("description");
this.Location = element.GetAttributeValue<string>("location");
var schema = element.Element("schema"); var schema = element.Element("schema");
if (schema == null) if (schema == null)
...@@ -57,7 +63,13 @@ namespace VIZ.Package.Storage ...@@ -57,7 +63,13 @@ namespace VIZ.Package.Storage
/// </summary> /// </summary>
public XElement ToXmlElement() public XElement ToXmlElement()
{ {
throw new NotImplementedException(); XElement entry = new XElement("field");
entry.SetAttributeValueIfValueNotNull("name", this.Name);
entry.SetAttributeValueIfValueNotNull("type", this.Type);
entry.SetAttributeValueIfValueNotNull("description", this.Description);
entry.SetAttributeValueIfValueNotNull("location", this.Location);
return entry;
} }
} }
} }
...@@ -37,7 +37,17 @@ namespace VIZ.Package.Storage ...@@ -37,7 +37,17 @@ namespace VIZ.Package.Storage
/// </summary> /// </summary>
public XElement ToXmlElement() public XElement ToXmlElement()
{ {
throw new NotImplementedException(); XElement element = new XElement("schema");
if (this.Fields.Count == 0)
return element;
foreach (var item in this.Fields)
{
element.Add(item.ToXmlElement());
}
return element;
} }
} }
} }
...@@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 ...@@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00-Doc", "00-Doc", "{4F55B183-4696-461C-8284-040FA7472C39}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00-Doc", "00-Doc", "{4F55B183-4696-461C-8284-040FA7472C39}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Doc\底飞_insert.xml = Doc\底飞_insert.xml Doc\底飞_insert.xml = Doc\底飞_insert.xml
Doc\底飞_set.xml = Doc\底飞_set.xml
Doc\底飞_update.xml = Doc\底飞_update.xml Doc\底飞_update.xml = Doc\底飞_update.xml
Doc\控制对象自定义字段.txt = Doc\控制对象自定义字段.txt Doc\控制对象自定义字段.txt = Doc\控制对象自定义字段.txt
EndProjectSection EndProjectSection
......
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