示例#1
0
		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());
			});
		}
示例#2
0
		/// <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();
		}
示例#3
0
		/// <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;
		}
示例#4
0
		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());
			});
		}
示例#5
0
		/// <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();
		}
示例#6
0
		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");
			}
		}