aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MachineJobSelectionView.xaml
blob: ce632539e796d7bbf7ae1ab45c6fd1d38e267188 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using Tango.MachineStudio.Common.Notifications;

namespace Tango.MachineStudio.DB.ViewModels
{
    public class ProcessParametersTablesViewVM : DbTableViewModel<ProcessParametersTable>
    {
        public ProcessParametersTablesViewVM(INotificationProvider notification) : base(notification)
        {
            
        }
    }
}
n256'>256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
<UserControl x:Class="Tango.MachineStudio.Developer.Views.MachineJobSelectionView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:global="clr-namespace:Tango.MachineStudio.Developer"
             xmlns:designer="clr-namespace:Tango.MachineStudio.MachineDesigner.Views;assembly=Tango.MachineStudio.MachineDesigner"
             xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
             xmlns:autoComplete="clr-namespace:Tango.AutoComplete.Editors;assembly=Tango.AutoComplete"
             xmlns:automation="clr-namespace:Tango.MachineStudio.Common.Automation;assembly=Tango.MachineStudio.Common"
             xmlns:localConverters="clr-namespace:Tango.MachineStudio.Developer.Converters"
             xmlns:vm="clr-namespace:Tango.MachineStudio.Developer.ViewModels"
             xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
             xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
             xmlns:observables="clr-namespace:Tango.BL.Entities;assembly=Tango.BL"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:commonControls="clr-namespace:Tango.MachineStudio.Common.Controls;assembly=Tango.MachineStudio.Common"
             xmlns:local="clr-namespace:Tango.MachineStudio.Developer.Views"
             mc:Ignorable="d" 
             x:Name="control" d:DesignHeight="1080" d:DesignWidth="1920" Background="Transparent" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}">

    <UserControl.Resources>
        <localConverters:SegmentToBrushConverterMulti x:Key="SegmentToBrushConverterMulti" />
        <converters:DateTimeUTCToShortDateTimeConverter x:Key="DateTimeUTCToShortDateTimeConverter"/>
        <localConverters:MillisecondsToTimeSpanConverter x:Key="MillisecondsToTimeSpanConverter" />
        <converters:GreaterThanToBooleanConverter x:Key="GreaterThanToBooleanConverter" />
        <converters:MathOperatorConverter x:Key="MathOperatorConverter" />
        <converters:BooleanInverseConverter x:Key="BooleanInverseConverter" />
    </UserControl.Resources>

    <Grid IsEnabled="{Binding IsFree}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="600"/>
                <ColumnDefinition Width="1*"/>
            </Grid.ColumnDefinitions>

            <Grid Background="{StaticResource TransparentBackgroundBrush400}">
                <StackPanel>
                    <TextBlock Margin="40 20" FontSize="30" FontWeight="SemiBold" FontStyle="Italic">TARGET MACHINE</TextBlock>

                    <DockPanel Margin="40 0 40 0" IsEnabled="{Binding CanWork}">
                        <Button Command="{Binding ReloadMachinesCommand}" DockPanel.Dock="Right" ToolTip="Reload" Foreground="{StaticResource GrayBrush280}" Margin="20 0 0 0" Padding="0" Width="40" Height="Auto" Style="{StaticResource MaterialDesignFlatButton}">
                            <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24" />
                        </Button>
                        <autoComplete:AutoCompleteTextBox Provider="{Binding MachinesProvider}" LoadingContent="Loading..." FontSize="20" SelectedItem="{Binding SelectedMachine,Mode=TwoWay}" materialDesign:HintAssist.Hint="Serial Number" DisplayMember="SerialNumber">
                            <autoComplete:AutoCompleteTextBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel>
                                        <TextBlock Text="{Binding SerialNumber}" FontWeight="Bold" FontStyle="Italic"></TextBlock>
                                        <TextBlock FontSize="11" Text="{Binding Name}" Foreground="Gray"></TextBlock>
                                    </StackPanel>
                                </DataTemplate>
                            </autoComplete:AutoCompleteTextBox.ItemTemplate>
                        </autoComplete:AutoCompleteTextBox>
                    </DockPanel>
                    <designer:MachineView Width="600" IsHitTestVisible="False" Margin="0 40 0 0" DataContext="{Binding SelectedMachine}" />
                </StackPanel>
            </Grid>

            <Grid Grid.Column="1">
                <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Width="1100" Height="700">
                    <DockPanel>
                        <Grid DockPanel.Dock="Top">
                            <StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <Image Source="{StaticResource MachineSmall}" RenderOptions.BitmapScalingMode="Fant" Width="50"></Image>
                                    <TextBlock VerticalAlignment="Center" FontWeight="SemiBold" Margin="30 0 0 0" FontSize="30" FontStyle="Italic">MACHINE JOBS</TextBlock>
                                </StackPanel>
                                <Rectangle HorizontalAlignment="Stretch" Margin="0 10 0 0" VerticalAlignment="Bottom" StrokeThickness="1" Height="3">
                                    <Rectangle.Fill>
                                        <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">
                                            <GradientStop Offset="0" Color="Transparent" />
                                            <GradientStop Offset="0.5" Color="{StaticResource AccentColor}" />
                                            <GradientStop Offset="1.1" Color="Transparent" />
                                        </LinearGradientBrush>
                                    </Rectangle.Fill>
                                    <Rectangle.Stroke>
                                        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                            <GradientStop Offset="0" Color="Transparent" />
                                            <GradientStop Offset="0.5" Color="White" />
                                            <GradientStop Offset="1" Color="Transparent" />
                                        </LinearGradientBrush>
                                    </Rectangle.Stroke>
                                </Rectangle>
                            </StackPanel>

                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 10 0">
                                <materialDesign:PackIcon Kind="Magnify" Width="26" Height="26"/>
                                <TextBox Width="300" materialDesign:HintAssist.Hint="Search name, user, length..." Text="{Binding JobFilter,UpdateSourceTrigger=PropertyChanged}"></TextBox>
                            </StackPanel>
                        </Grid>

                        <Grid DockPanel.Dock="Bottom" Margin="0 20 0 0">

                            <StackPanel VerticalAlignment="Center" Orientation="Horizontal" HorizontalAlignment="Left" Margin="20 0 0 0">
                                <Button AutomationProperties.AutomationId="{x:Static automation:Developer.DeleteJobButton}" Margin="0 0 10 0" MinWidth="160" Height="50" Background="{StaticResource RedBrush300}" BorderBrush="{StaticResource RedBrush300}" Command="{Binding RemoveJobCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="Delete" Width="20" Height="20" />
                                        <TextBlock Margin="5 0 0 0" FontSize="16">DELETE</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Button AutomationProperties.AutomationId="{x:Static automation:Developer.DuplicateJobButton}" Margin="0 0 10 0" MinWidth="160" Height="50" Background="{StaticResource OrangeBrush300}" BorderBrush="{StaticResource OrangeBrush300}" Command="{Binding DuplicateJobCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="ContentCopy" Width="20" Height="20" />
                                        <TextBlock Margin="5 0 0 0" FontSize="16">DUPLICATE</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Button AutomationProperties.AutomationId="{x:Static automation:Developer.NewJobButton}" Margin="0 0 10 0" MinWidth="160" Height="50" Background="{StaticResource GreenBrush300}" BorderBrush="{StaticResource GreenBrush300}" Command="{Binding AddJobCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="Plus" Width="20" Height="20" />
                                        <TextBlock Margin="5 0 0 0" FontSize="16">NEW JOB</TextBlock>
                                    </StackPanel>
                                </Button>
                            </StackPanel>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                                <Button Margin="50 0 10 0" MinWidth="200" Height="60" Command="{Binding LoadJobCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock FontSize="18" VerticalAlignment="Center">LOAD JOB</TextBlock>
                                        <materialDesign:PackIcon Margin="5 0 0 0" Kind="ChevronRight" Width="30" Height="30" />
                                    </StackPanel>
                                </Button>
                            </StackPanel>
                        </Grid>

                        <Grid Margin="0 20 0 0">
                            <commonControls:LoadingPanel IsLoading="{Binding CanWork,Converter={StaticResource BooleanInverseConverter}}">
                                <controls:MultiSelectDataGrid DoubleClickCommand="{Binding LoadJobCommand}" AutomationProperties.AutomationId="{x:Static automation:Developer.JobsDataGrid}" Style="{StaticResource {x:Type DataGrid}}" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeColumns="True" CanUserSortColumns="True" AutoGenerateColumns="False" Background="Transparent" ItemsSource="{Binding JobsCollectionView}" SelectedItem="{Binding SelectedMachineJob}" SelectedItemsList="{Binding SelectedJobs,Mode=TwoWay}">
                                    <DataGrid.CellStyle>
                                        <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
                                            <Setter Property="BorderThickness" Value="0"/>
                                            <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                                            <Setter Property="VerticalContentAlignment" Value="Center"></Setter>
                                        </Style>
                                    </DataGrid.CellStyle>
                                    <DataGrid.Columns>
                                        <DataGridTemplateColumn>
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate DataType="{x:Type observables:Job}">
                                                    <ContentControl>
                                                        <ContentControl.Style>
                                                            <Style TargetType="ContentControl">
                                                                <Setter Property="Content">
                                                                    <Setter.Value>
                                                                        <Image Source="../Images/rgb.png" Width="40" Margin="5"></Image>
                                                                    </Setter.Value>
                                                                </Setter>
                                                                <Style.Triggers>
                                                                    <DataTrigger Binding="{Binding HasEmbroideryFile}" Value="True">
                                                                        <Setter Property="Content">
                                                                            <Setter.Value>
                                                                                <Button ToolTip="Press to display the attached embroidery file information" Style="{StaticResource emptyButton}" Cursor="Hand" Command="{Binding DataContext.DisplayJobEmbroideryFileCommand, Source={x:Reference control}}" CommandParameter="{Binding}">
                                                                                    <Image Source="../Images/job-emb.png" Width="40" Margin="5"></Image>
                                                                                </Button>
                                                                            </Setter.Value>
                                                                        </Setter>
                                                                    </DataTrigger>
                                                                </Style.Triggers>
                                                            </Style>
                                                        </ContentControl.Style>
                                                    </ContentControl>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="NAME" CanUserSort="True" SortMemberPath="Name" MaxWidth="100">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding Name}" ToolTip="{Binding Name}"  TextWrapping="Wrap" MaxHeight="40" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" FontSize="14"></TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="CREATION DATE" Width="150" CanUserSort="True" SortMemberPath="CreationDate">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding CreationDate,Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" VerticalAlignment="Center" FontSize="14"></TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="LAST MODIFIED" Width="150" CanUserSort="True" SortMemberPath="LastUpdated">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" VerticalAlignment="Center" FontSize="14"></TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="LAST RUN" Width="150" CanUserSort="True" SortMemberPath="LastRun">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding LastRun,Converter={StaticResource DateTimeUTCToShortDateTimeConverter},FallbackValue='Never',TargetNullValue='Never'}" VerticalAlignment="Center" FontSize="14"></TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="CREATED BY" Width="100" CanUserSort="True" SortMemberPath="User.Contact.FirstName">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding User.Contact.FirstName,TargetNullValue='PPC',FallbackValue='PPC'}" VerticalAlignment="Center" FontSize="14"></TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="LENGTH" Width="100" CanUserSort="True" SortMemberPath="Length">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock VerticalAlignment="Center" FontSize="14">
                                                    <Run Text="{Binding Length,Mode=OneWay,StringFormat=N2}"></Run>
                                                    <Run Text="m" Foreground="Gray"></Run>
                                                    </TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Header="DURATION" Width="100" CanUserSort="True" SortMemberPath="EstimatedDurationMili">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock VerticalAlignment="Center" FontSize="14">
                                                    <Run Text="{Binding EstimatedDurationMili,Converter={StaticResource MillisecondsToTimeSpanConverter},Mode=OneWay,StringFormat=hh\\:mm\\:ss,TargetNullValue='Unknown'}"></Run>
                                                    </TextBlock>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                        <DataGridTemplateColumn Width="1*" Header="SEGMENTS" CanUserSort="True" SortMemberPath="Segments.Count">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <StackPanel Orientation="Horizontal">
                                                        <ItemsControl HorizontalAlignment="Right" ItemsSource="{Binding Segments}">
                                                            <ItemsControl.ItemsPanel>
                                                                <ItemsPanelTemplate>
                                                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" MaxWidth="110">

                                                                    </StackPanel>
                                                                </ItemsPanelTemplate>
                                                            </ItemsControl.ItemsPanel>
                                                            <ItemsControl.ItemTemplate>
                                                                <DataTemplate>
                                                                    <Border Width="25" Height="25" Margin="10 0 0 0" BorderThickness="1" BorderBrush="DimGray" CornerRadius="3" Background="{Binding SegmentBrush}">

                                                                    </Border>
                                                                </DataTemplate>
                                                            </ItemsControl.ItemTemplate>
                                                        </ItemsControl>
                                                        <StackPanel Orientation="Horizontal" Margin="0 0 0 0" VerticalAlignment="Center">
                                                            <StackPanel.Style>
                                                                <Style TargetType="StackPanel">
                                                                    <Setter Property="Visibility" Value="Collapsed"></Setter>
                                                                    <Style.Triggers>
                                                                        <DataTrigger Binding="{Binding Segments.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=3}" Value="True">
                                                                            <Setter Property="Visibility" Value="Visible"></Setter>
                                                                        </DataTrigger>
                                                                    </Style.Triggers>
                                                                </Style>
                                                            </StackPanel.Style>
                                                            <materialDesign:PackIcon Kind="Plus" Width="18" Height="18" VerticalAlignment="Center" />
                                                            <TextBlock Margin="0 -3 0 0" Text="{Binding Segments.Count,Converter={StaticResource MathOperatorConverter},ConverterParameter='-3'}" FontSize="16" VerticalAlignment="Center" FontWeight="SemiBold" FontStyle="Italic"></TextBlock>
                                                        </StackPanel>
                                                    </StackPanel>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>
                                    </DataGrid.Columns>
                                </controls:MultiSelectDataGrid>
                            </commonControls:LoadingPanel>
                        </Grid>
                    </DockPanel>

                    <StackPanel Margin="20 0 0 -100" VerticalAlignment="Bottom" HorizontalAlignment="Left" Orientation="Horizontal">
                        <Button Command="{Binding ImportJobFileCommand}" Foreground="{StaticResource BlackForegroundBrush}" FontSize="16" Style="{StaticResource emptyButton}" Cursor="Hand">
                            <StackPanel Orientation="Horizontal">
                                <materialDesign:PackIcon Kind="FileImport" VerticalAlignment="Center" Width="30" Height="30" />
                                <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" TextDecorations="Underline">Import Job File</TextBlock>
                            </StackPanel>
                        </Button>

                        <Button Margin="30 0 0 0" Command="{Binding ExportJobFileCommand}" Foreground="{StaticResource BlackForegroundBrush}" FontSize="16" Style="{StaticResource emptyButton}" Cursor="Hand">
                            <StackPanel Orientation="Horizontal">
                                <materialDesign:PackIcon Kind="FileExport" VerticalAlignment="Center" Width="30" Height="30" />
                                <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" TextDecorations="Underline">Export Job File</TextBlock>
                            </StackPanel>
                        </Button>
                        <Button Margin="30 0 0 0" Command="{Binding ImportEmbroideryFileCommand}" Foreground="{StaticResource BlackForegroundBrush}" FontSize="16" Style="{StaticResource emptyButton}" Cursor="Hand">
                            <StackPanel Orientation="Horizontal">
                                <Image Source="../Images/sewing-machine.png" Width="32"></Image>
                                <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" TextDecorations="Underline">Import Embroidery File</TextBlock>
                            </StackPanel>
                        </Button>
                    </StackPanel>
                </Grid>
            </Grid>
        </Grid>
    </Grid>
</UserControl>