316 lines
16 KiB
XML
316 lines
16 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:semi="https://irihi.tech/semi"
|
|
xmlns:u="https://irihi.tech/ursa"
|
|
xmlns:i="using:Avalonia.Xaml.Interactivity"
|
|
xmlns:vm="using:Plugin.Cowain.Wcs.ViewModels"
|
|
xmlns:i18n="clr-namespace:Ke.Bee.Localization.Extensions;assembly=Ke.Bee.Localization"
|
|
xmlns:conv="using:Cowain.Base.Converters"
|
|
xmlns:helper="using:Cowain.Base.Helpers"
|
|
xmlns:convWcs="using:Plugin.Cowain.Wcs.Converters"
|
|
xmlns:controls="using:Plugin.Cowain.Wcs.Controls"
|
|
xmlns:extensions="using:Cowain.Base.Extensions"
|
|
mc:Ignorable="d"
|
|
d:DesignWidth="800"
|
|
d:DesignHeight="450"
|
|
x:Class="Plugin.Cowain.Wcs.Views.WcsRealStationView">
|
|
<UserControl.Resources>
|
|
<conv:I18nLocalizeConverter x:Key="i18nConverter" />
|
|
<conv:MultiIdToPropertyConverter x:Key="IdToPropertyConverter" />
|
|
<conv:ListCountConverter x:Key="ListCountConverter" />
|
|
<convWcs:StationStatusBrushConverter x:Key="StationStatusBrushConverter" />
|
|
<convWcs:RgvArrowVisibleConverter x:Key="RgvArrowVisibleConverter" />
|
|
<convWcs:LayoutRowDefinitionsConverter x:Key="LayoutRowDefinitionsConverter" />
|
|
<convWcs:LayoutColumnDefinitionsConverter x:Key="LayoutColumnDefinitionsConverter" />
|
|
<convWcs:CellPositionToPixelConverter x:Key="CellPositionToPixelConverter" />
|
|
<helper:BindingProxy x:Key="Proxy"
|
|
DataContext="{Binding}" />
|
|
|
|
|
|
</UserControl.Resources>
|
|
|
|
<UserControl.Styles>
|
|
<Style Selector="ItemsControl > ContentPresenter" x:DataType="vm:RgvViewModel">
|
|
<Setter Property="Canvas.Left" Value="{Binding LayOutX ,Mode=OneWay, Converter={StaticResource CellPositionToPixelConverter}}" />
|
|
<Setter Property="Canvas.Top" Value="{Binding LayOutY ,Mode=OneWay, Converter={StaticResource CellPositionToPixelConverter}}" />
|
|
<Setter Property="ZIndex" Value="10" />
|
|
<Setter Property="Transitions">
|
|
<Transitions>
|
|
<DoubleTransition Property="Canvas.Left" Duration="0:0:2" Easing="CubicEaseOut" />
|
|
<DoubleTransition Property="Canvas.Top" Duration="0:0:2" Easing="CubicEaseOut" />
|
|
</Transitions>
|
|
</Setter>
|
|
</Style>
|
|
<Style Selector="ItemsControl > ContentPresenter" x:DataType="vm:StationViewModel">
|
|
<Setter Property="Canvas.Left" Value="{Binding LayOutX ,Mode=OneWay, Converter={StaticResource CellPositionToPixelConverter}}" />
|
|
<Setter Property="Canvas.Top" Value="{Binding LayOutY ,Mode=OneWay, Converter={StaticResource CellPositionToPixelConverter}}" />
|
|
</Style>
|
|
</UserControl.Styles>
|
|
|
|
<Grid Margin="8">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="200" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<StackPanel>
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
|
<TextBlock Text="{i18n:Localize WcsRealStation.TaskList}" Classes="H4" Theme="{StaticResource TitleTextBlock}" Margin="4,4,0,10"/>
|
|
</StackPanel>
|
|
|
|
<Grid Margin="6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="100"/>
|
|
<ColumnDefinition Width="80"/>
|
|
<ColumnDefinition Width="80"/>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="180"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{i18n:Localize WcsTaskList.DataGrid.Id}"/>
|
|
<TextBlock Grid.Column="1" Text="{i18n:Localize WcsTaskList.DataGrid.IsFinished}"/>
|
|
<TextBlock Grid.Column="2" Text="{i18n:Localize WcsTaskList.DataGrid.ProcessName}"/>
|
|
<TextBlock Grid.Column="3" Text="{i18n:Localize WcsTaskList.DataGrid.Priority}"/>
|
|
<TextBlock Grid.Column="4" Text="{i18n:Localize WcsTaskList.DataGrid.ExecuteAction}"/>
|
|
<TextBlock Grid.Column="5" Text="{i18n:Localize WcsTaskList.DataGrid.FromStation}"/>
|
|
<TextBlock Grid.Column="6" Text="{i18n:Localize WcsTaskList.DataGrid.ToStation}"/>
|
|
</Grid>
|
|
<ItemsControl ItemsSource="{Binding TaskList}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<Grid Margin="6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="100"/>
|
|
<ColumnDefinition Width="80"/>
|
|
<ColumnDefinition Width="80"/>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="180"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Column="0" Text="{Binding Id}"/>
|
|
<TextBlock Grid.Column="1" Text="{Binding IsFinished,Converter={StaticResource i18nConverter}, ConverterParameter='WcsTaskList'}"/>
|
|
<TextBlock Grid.Column="2" Text="{Binding ProcessName}"/>
|
|
<TextBlock Grid.Column="3" Text="{Binding Priority}"/>
|
|
<StackPanel Grid.Column="4" Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock>
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="ExecuteAction" />
|
|
<Binding Path="Actions" />
|
|
<Binding Source="Name" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="5" Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock>
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="FromStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationName" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
<TextBlock Text=":" />
|
|
<TextBlock Foreground="Red">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="FromStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationCode" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="6" Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock>
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="ToStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationName" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
<TextBlock Text=":" />
|
|
<TextBlock Foreground="Red">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="ToStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationCode" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1">
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10" Margin="0 0 0 10">
|
|
<TextBlock Text="{i18n:Localize WcsRealStation.StationStatus}" Classes="H4" Theme="{StaticResource TitleTextBlock}"/>
|
|
<TextBlock Text="{i18n:Localize WcsRealStation.StationStatus.Tips}" VerticalAlignment="Center"/>
|
|
<TextBlock Text=":" VerticalAlignment="Center"/>
|
|
<StackPanel Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
|
|
<Border Width="24" Height="24" Background="Orange" BorderBrush="Gray" BorderThickness="1" />
|
|
<TextBlock Text="{i18n:Localize StationState.RequestPick}" VerticalAlignment="Center" />
|
|
<Border Width="24" Height="24" Background="OrangeRed" BorderBrush="Gray" BorderThickness="1" />
|
|
<TextBlock Text="{i18n:Localize StationState.RequestPlace}" VerticalAlignment="Center" />
|
|
<Border Width="24" Height="24" Background="Yellow" BorderBrush="Gray" BorderThickness="1" />
|
|
<TextBlock VerticalAlignment="Center" >
|
|
<Run Text="{i18n:Localize StationState.Picking}" />
|
|
<Run > / </Run>
|
|
<Run Text="{i18n:Localize StationState.Placing}"/>
|
|
</TextBlock>
|
|
<Border Width="24" Height="24" Background="LightGreen" BorderBrush="Gray" BorderThickness="1" />
|
|
<TextBlock VerticalAlignment="Center" >
|
|
<Run Text="{i18n:Localize StationState.PickFinished}" />
|
|
<Run > / </Run>
|
|
<Run Text="{i18n:Localize StationState.PlaceFinished}"/>
|
|
</TextBlock>
|
|
<Border Width="24" Height="24" Background="Gray" BorderBrush="Gray" BorderThickness="1" />
|
|
<TextBlock Text="{i18n:Localize StationState.UnKnown}" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
|
<ItemsControl ItemsSource="{Binding LayoutList}"
|
|
HorizontalAlignment="Left" VerticalAlignment="Top">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<Canvas Width="{Binding Width}" Height="{Binding Height}"/>
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
<ItemsControl.DataTemplates>
|
|
<DataTemplate DataType="{x:Type vm:StationViewModel}">
|
|
<Border Width="100" Height="100" Margin="5"
|
|
BorderBrush="{StaticResource SemiGreen4}"
|
|
Background="{Binding Status ,Converter={StaticResource StationStatusBrushConverter} }"
|
|
BorderThickness="2" CornerRadius="5" >
|
|
<StackPanel Spacing="5" Margin="5">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock>
|
|
<Run Text="{Binding StationName}" Foreground="Black"/>
|
|
<Run Foreground="Black"> : </Run>
|
|
<Run Text="{Binding StationCode}" Foreground="Red"/>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock Text="{Binding ProcessName}" Foreground="Black"/>
|
|
</StackPanel>
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock Foreground="Black" Text="{Binding Status,Converter={StaticResource i18nConverter}, ConverterParameter='StationState'}"/>
|
|
</StackPanel>
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock Foreground="Black" Text="{Binding QrCode}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type vm:RgvViewModel}">
|
|
<Grid>
|
|
<!-- 箭头装饰器们 ... -->
|
|
<controls:RgvArrowDecorator
|
|
ArrowEndCanvasPoint="{Binding FromStationPoint}"
|
|
ArrowBrush="Red" ArrowDirection="True"
|
|
IsVisible="{Binding FromStationId , Converter={StaticResource RgvArrowVisibleConverter}}"/>
|
|
<controls:RgvArrowDecorator
|
|
ArrowEndCanvasPoint="{Binding ToStationPoint}"
|
|
ArrowBrush="Green" ArrowDirection="False"
|
|
IsVisible="{Binding ToStationId , Converter={StaticResource RgvArrowVisibleConverter}}"/>
|
|
|
|
<!-- 小车本体 -->
|
|
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="10" Margin="5" >
|
|
<!-- 上方三角形 -->
|
|
<Polygon Points="50,0 40,15 60,15" Fill="Black" Width="100" Height="15" HorizontalAlignment="Center">
|
|
<Polygon.Styles>
|
|
<Style>
|
|
<Style.Animations>
|
|
<Animation Duration="0:0:1" IterationCount="Infinite">
|
|
<KeyFrame Cue="0%">
|
|
<Setter Property="Opacity" Value="0.0"/>
|
|
</KeyFrame>
|
|
<KeyFrame Cue="100%">
|
|
<Setter Property="Opacity" Value="0.5"/>
|
|
</KeyFrame>
|
|
</Animation>
|
|
</Style.Animations>
|
|
</Style>
|
|
</Polygon.Styles>
|
|
|
|
</Polygon>
|
|
<!-- 小车矩形 -->
|
|
<Border Width="100" Height="50"
|
|
CornerRadius="10">
|
|
<Border.Background>
|
|
<LinearGradientBrush StartPoint="50%,0%" EndPoint="50%,100%">
|
|
<GradientStop Color="#A8E6CF" Offset="0.0"/>
|
|
<GradientStop Color="#3D84A8" Offset="0.5"/>
|
|
<GradientStop Color="#46CDCF" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
</Border.Background>
|
|
<StackPanel Spacing="5">
|
|
<TextBlock Text="{Binding StationName}" Foreground="Black"
|
|
HorizontalAlignment="Center"/>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock Foreground="Black">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="FromStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationName" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
<TextBlock Text="->" Foreground="Black"/>
|
|
<TextBlock Foreground="Black">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource IdToPropertyConverter}">
|
|
<Binding Path="ToStationId" />
|
|
<Binding Source="{StaticResource Proxy}" Path="DataContext.Stations" />
|
|
<Binding Source="StationName" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
|
|
|
|
<!-- 下方三角形 -->
|
|
<Polygon Points="50,15 40,0 60,0" Fill="Black" Width="100" Height="15" HorizontalAlignment="Center">
|
|
<Polygon.Styles>
|
|
<Style>
|
|
<Style.Animations>
|
|
<Animation Duration="0:0:1" IterationCount="Infinite">
|
|
<KeyFrame Cue="0%">
|
|
<Setter Property="Opacity" Value="0.0"/>
|
|
</KeyFrame>
|
|
<KeyFrame Cue="100%">
|
|
<Setter Property="Opacity" Value="0.5"/>
|
|
</KeyFrame>
|
|
</Animation>
|
|
</Style.Animations>
|
|
</Style>
|
|
</Polygon.Styles>
|
|
</Polygon>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</ItemsControl.DataTemplates>
|
|
|
|
</ItemsControl>
|
|
</ScrollViewer>
|
|
</StackPanel>
|
|
</Grid>
|
|
</UserControl> |