aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs
blob: 95db08dfa848200f5d307ea1cccae9b7c87c6a1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
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 LinearMassDensityUnitsViewVM : DbTableViewModel<LinearMassDensityUnit>
    {
        public LinearMassDensityUnitsViewVM(INotificationProvider notification) : base(notification)
        {
        }
    }
}
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.PPC.Common;
using Tango.PPC.Jobs;
using Tango.PPC.Jobs.NavigationObjects;
using Tango.PPC.Jobs.Views;

namespace Tango.PPC.UI.ViewModels
{
    public class MachineStatusViewVM : PPCViewModel
    {
        #region Properties

        private JobHandler _handler;

        private Job _job;
        /// <summary>
        /// Gets or sets the job.
        /// </summary>
        public Job Job
        {
            get { return _job; }
            set { _job = value;
                if(_job == null)
                    IsDyeingProcess = false;
                RaisePropertyChangedAuto(); }
        }

        private RunningJobStatus _runningJobStatus;
        /// <summary>
        /// Gets or sets the running job status.
        /// </summary>
        public RunningJobStatus RunningJobStatus
        {
            get { return _runningJobStatus; }
            set {
                _runningJobStatus = value;
                 IsDyeingProcess = (_runningJobStatus != null && _runningJobStatus.CurrentSegment != null);
                if(_runningJobStatus != null && _runningJobStatus.CurrentSegment != null)
                {
                    var segment = Job.Segments.FirstOrDefault(x=>x.SegmentIndex == _runningJobStatus.CurrentSegment.SegmentIndex);
                    if(segment != null)
                        CurrentBrushStop = segment.FirstBrushStop;
                }
                RaisePropertyChangedAuto();
            }
        }

        private bool _isJobStatusViewEnable;

        public bool IsJobStatusViewEnable
        {
            get { return _isJobStatusViewEnable; }
            set { _isJobStatusViewEnable = value; RaisePropertyChangedAuto(); }
        }

        private bool _isEnabledStopButton;
        /// <summary>
        /// Gets or sets a value indicating whether this instance is enabled stop button.
        /// </summary>
        public bool IsEnabledStopButton
        {
            get { return _isEnabledStopButton; }
            set { _isEnabledStopButton = value; RaisePropertyChangedAuto(); }
        }

        private bool _isSpoolView;
        /// <summary>
        /// Gets or sets a value indicating whether this instance is spool view.
        /// </summary>
        public bool IsSpoolView
        {
            get { return _isSpoolView; }
            set { _isSpoolView = value; RaisePropertyChangedAuto(); }
        }

        private bool _isWeightView;
        /// <summary>
        /// Gets or sets a value indicating whether this instance is length. Show indicator values in length or weight.
        /// </summary>
        public bool IsWeghtView
        {
            get { return _isWeightView; }
            set { _isWeightView = value; RaisePropertyChangedAuto(); }
        }


        private bool _isDyeingProcess;

        public bool IsDyeingProcess
        {
            get { return _isDyeingProcess; }
            set {
                if(_isDyeingProcess != value)
                {
                    _isDyeingProcess = value;
                    RaisePropertyChangedAuto();
                }
            }
        }

        private BrushStop _currentBrushStop;

        public BrushStop CurrentBrushStop
        {
            get { return _currentBrushStop; }
            set {
                if(_currentBrushStop != value)
                {
                    _currentBrushStop = value;
                    OnUpdateCurrentBrush();
                    RaisePropertyChangedAuto();
                }
            }
        }

        public double CyanOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.Cyan); }
        }

        public double MagentaOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.Magenta); }
        }

        public double YellowOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.Yellow); }
        }

        public double BlackOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.Black); }
        }
        
        public double LightCyanOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.LightCyan); }
        }

        public double LightMagentaOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.LightMagenta); }
        }

        public double LightYellowOutput
        {
            get { return GetVolumeLiquidType(LiquidTypes.LightYellow); }
        }

        //public double TransparentInkOutput
        //{
        //    get { return GetVolumeLiquidType(LiquidTypes.TransparentInk); }
        //}

        //public double LubricantOutput
        //{
        //    get { return GetVolumeLiquidType(LiquidTypes.Lubricant); }
        //}

        #endregion

        #region Commands

        public RelayCommand StopCommand { get; set; }

        public RelayCommand AbortCommand { get; set; }

        public RelayCommand GoToJobCommand { get; set; }

        /// <summary>
        /// Gets or sets the job status view command.
        /// </summary>
        public RelayCommand JobStatusViewCommand { get; set; }

        /// <summary>
        /// Gets or sets the overview view command.
        /// </summary>
        public RelayCommand OverviewViewCommand { get; set; }

        public RelayCommand ClearAllNotificationsCommand { get; set; }

        #endregion

        public MachineStatusViewVM()
        {
            StopCommand = new RelayCommand(StopJob, ()=>CanStopped());
            AbortCommand = new RelayCommand(AbortJob, () => CanStopped());
            GoToJobCommand = new RelayCommand(GoToJob);
            JobStatusViewCommand = new RelayCommand(JobStatusView);
            OverviewViewCommand = new RelayCommand(OverviewView);
            ClearAllNotificationsCommand = new RelayCommand(ClearAllNotifications);

            IsJobStatusViewEnable = true;
            IsEnabledStopButton = false;
            IsSpoolView = false;
            IsWeghtView = false;
        }

        #region printing

        public override void OnApplicationStarted()
        {
            MachineProvider.MachineOperator.PrintingStarted += MachineOperator_PrintingStarted;
            MachineProvider.MachineOperator.PrintingEnded += MachineOperator_PrintingEnded;
        }
        
        private void MachineOperator_PrintingStarted(object sender, PrintingEventArgs e)
        {
            _handler = e.JobHandler;
            Job = e.Job;
            e.JobHandler.StatusChanged += JobHandler_StatusChanged;
            //e.JobHandler.SpoolChangeRequired += JobHandler_SpoolChangeRequired;
            e.JobHandler.Stopped += JobHandler_Stopped;
            e.JobHandler.CanCancelChanged += JobHandler_CanCancelChanged;
            InvokeUI(() =>
            {
                IsEnabledStopButton = true;
                StopCommand.RaiseCanExecuteChanged();
                AbortCommand.RaiseCanExecuteChanged();
            });


        }

        private void JobHandler_Stopped(object sender, EventArgs e)
        {
            if (_handler != null)
            {
                _handler.StatusChanged -= JobHandler_StatusChanged;
                //_handler.SpoolChangeRequired -= JobHandler_SpoolChangeRequired;
                _handler.Stopped -= JobHandler_Stopped;
                _handler.StatusChanged -= JobHandler_StatusChanged;
                _handler.CanCancelChanged -= JobHandler_CanCancelChanged;
            }
        }

        private void MachineOperator_PrintingEnded(object sender, PrintingEventArgs e)
        {
            LogManager.Log("Printing ended");
            InvokeUI(() =>
            {
                IsEnabledStopButton = false;
                StopCommand.RaiseCanExecuteChanged();
                AbortCommand.RaiseCanExecuteChanged();
            });
        }

        private void JobHandler_StatusChanged(object sender, RunningJobStatus e)
        {
            InvokeUI(() =>
            {
                RunningJobStatus = e;
            });
        }

        private void JobHandler_CanCancelChanged(object sender, EventArgs e)
        {
            InvokeUI( () =>
            {
                IsEnabledStopButton = _handler.CanCancel;
                StopCommand.RaiseCanExecuteChanged();
                AbortCommand.RaiseCanExecuteChanged();
            });
        }
        
        #endregion

        #region Methods

        private void GoToJob()
        {
            
            NavigationManager.NavigateWithObject<JobsV2Module, JobEurekaView, JobNavigationObject>(new JobNavigationObject() { Job = _handler.Job });
            NavigationManager.ClearHistoryExcept<JobsView>();
           
        }
        /// <summary>
        /// Toggles the application technician mode.
        /// </summary>
        public void ToggleTechnicianMode()
        {
            if (!ApplicationManager.IsInTechnicianMode)
            {
                ApplicationManager.EnterTechnicianMode();
            }
            else
            {
                ApplicationManager.ExitTechnicianMode();
            }
        }
        
        protected void JobStatusView()
        {
            IsJobStatusViewEnable = true;
        }

        protected void OverviewView()
        {
            IsJobStatusViewEnable = false;
        }

        private double GetVolumeLiquidType(LiquidTypes liquidType)
        {
            if(CurrentBrushStop != null && CurrentBrushStop.LiquidVolumes != null && CurrentBrushStop.LiquidVolumes.Count > 0)
            {
                var lt = CurrentBrushStop.LiquidVolumes.FirstOrDefault(x => x.LiquidType == liquidType);

                if (lt != null)
                {
                    return Math.Round(lt.Volume, 2);
                }
            }
            return 0;
        }

        private bool CanStopped()
        {
            return IsEnabledStopButton;
        }

        private void StopJob()
        {
            _handler?.Cancel();
        }

        private void AbortJob()
        {
            _handler?.Cancel();
            Job = null;
        }

        protected void ClearAllNotifications()
        {
            NotificationProvider.NotificationItems.Where(x=>x.CanClose).ToList().ForEach(y=> NotificationProvider.PopNotification(y));
        }

        protected void OnUpdateCurrentBrush()
        {
            RaisePropertyChanged(nameof(CyanOutput));
            RaisePropertyChanged(nameof(LightCyanOutput));
            RaisePropertyChanged(nameof(MagentaOutput));
            RaisePropertyChanged(nameof(LightMagentaOutput));
            RaisePropertyChanged(nameof(YellowOutput));
            RaisePropertyChanged(nameof(LightYellowOutput));
            RaisePropertyChanged(nameof(BlackOutput));
        }

        #endregion
    }
}