public TimingSet(Soheil.Core.ViewModels.PP.Editor.ProcessEditorVm vm) { IsInitializing = () => vm._isInitializing; SetIsInitializing = v => vm._isInitializing = v; GetCycleTime = () => vm.Model.StateStationActivity == null ? 0f : vm.Model.StateStationActivity.CycleTime; GetLowerBound = () => DateTime.MinValue;//vm.Model.Task.StartDateTime.TruncateMilliseconds(); GetUpperBound = () => DateTime.MaxValue; _suppress = true; vm.Model.TargetCount = vm.Model.TargetCount <= 0 ? 1 : vm.Model.TargetCount; vm.Model.DurationSeconds = vm.Model.DurationSeconds < GetCycleTime() ? (int)GetCycleTime() : vm.Model.DurationSeconds; vm.Model.EndDateTime = vm.Model.EndDateTime - vm.Model.StartDateTime < TimeSpan.FromSeconds(GetCycleTime()) ? vm.Model.StartDateTime + TimeSpan.FromSeconds(GetCycleTime()) : vm.Model.EndDateTime; TargetPoint = vm.Model.TargetCount; StartDateTime = vm.Model.StartDateTime; DurationSeconds = vm.Model.DurationSeconds; EndDateTime = vm.Model.EndDateTime; AutoDurationCommand = new Commands.Command(o => { DurationSeconds = (int)(TargetPoint * GetCycleTime()); }); AutoTargetPointCommand = new Commands.Command(o => { TargetPoint = (int)(DurationSeconds / GetCycleTime()); }); }
/// <summary> /// Creates an instance of BlockVm with the given model /// </summary> /// <remarks>commands must be set after creating a block</remarks> /// <param name="model"></param> /// <param name="parent"></param> public BlockVm(Soheil.Core.PP.PPItemBlock data, PPItemCollection parent) : base() { UOW = data.UOW; Parent = parent; _fullData = data; //this.ViewModeChanged += v => ShowTasks = v == PPViewMode.Report; load(); }
/// <summary> /// Creates multiple instances of <see cref="PPItemWorkTime"/> for given shift and its breaks /// </summary> /// <param name="item"></param> /// <returns> /// a collection of vms for this shift and its breaks /// <para>returns empty if current shift is not open</para></returns> public static IEnumerable<WorkTimeRangeVm> CreateAuto(Soheil.Core.PP.PPItemWorkTime item) { List<WorkTimeRangeVm> list = new List<WorkTimeRangeVm>(); if (item.Model.IsOpen) { var shiftVm = new WorkTimeRangeVm(item.Model, item.DayStart); list.Add(shiftVm); foreach (var wbreak in item.Model.WorkBreaks) { var breakVm = new WorkTimeRangeVm(wbreak, item.DayStart); shiftVm.Children.Add(breakVm); list.Add(breakVm); } } return list; }
public TimingSet(Soheil.Core.ViewModels.PP.Report.ProcessReportVm vm) { IsInitializing = () => vm._isInInitializingPhase; SetIsInitializing = v => vm._isInInitializingPhase = v; GetCycleTime = () => vm.Model.Process.StateStationActivity.CycleTime; GetLowerBound = () => vm.Model.Process.StartDateTime; GetUpperBound = () => vm.Model.Process.EndDateTime; TargetPoint = vm.Model.ProcessReportTargetPoint; DurationSeconds = vm.Model.DurationSeconds; StartDateTime = vm.Model.StartDateTime; EndDateTime = vm.Model.EndDateTime; AutoDurationCommand = new Commands.Command(o => { DurationSeconds = (int)(TargetPoint * GetCycleTime()); }); AutoTargetPointCommand = new Commands.Command(o => { TargetPoint = (int)(DurationSeconds / GetCycleTime()); }); }
/// <summary> /// Reloads current blocks full data updating the current UOW /// </summary> public void Reload(Soheil.Core.PP.PPItemBlock fullData) { UOW = fullData.UOW; _fullData = fullData; load(); }
void Operator_RoleChanged(OperatorVm operVm, Soheil.Common.OperatorRole role) { //find ProcessOperator in uow var poModel = Process.ProcessOperators.FirstOrDefault(x => x.Operator.Id == operVm.OperatorId); if (poModel != null) { poModel.Role = role; } else { MessageBox.Show("Error: operator is not found"); } }