public void SuccessfulParses(string line, string name, uint duration) { TaskSummary.TryParse(line, out TaskSummary? summary).ShouldBeTrue(); summary.ShouldNotBeNull(); summary.Name.ShouldBe(name); summary.DurationMS.ShouldBe(duration); }
private void GoToChildDetail() { if (this.taskList.SelectedItems.Count == 0) { return; } TaskSummary sum = (TaskSummary)this.taskList.SelectedItems[0].Tag; SetParent(sum.TaskId); }
private void taskList_DoubleClick(object sender, EventArgs e) { if (this.taskList.SelectedItems.Count == 0) { return; } TaskSummary sum = (TaskSummary)this.taskList.SelectedItems[0].Tag; SetParent(sum.TaskId); }
private TaskSummary TranslateSummary(task input) { var taskSummary = new TaskSummary(); if (input != null) { taskSummary.DueDate = CommonHelper.ConvertToDateUI(input.DUE_DATE); taskSummary.Hours = input.HOURS; taskSummary.Id = input.ID; taskSummary.ProjectName = input.PROJECT_NAME; taskSummary.TaskName = input.TASK_NAME; } return(taskSummary); }
private void CalculateTasksPercents() { foreach (ListViewItem item in this.taskList.Items) { double percent = 0; double goalPercent = 0; TaskSummary summary = (TaskSummary)item.Tag; if (totalTime > 0) { percent = (summary.TotalActiveTime + summary.TotalInactiveTime) / totalTime; } if (summary.TotalEstimation > 0) { goalPercent = summary.TotalTimeOverEstimation / (summary.TotalEstimation * 60); } TimeSpan activeTimeSpan = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalActiveTime)); TimeSpan inactiveTimeSpan = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalInactiveTime)); TimeSpan elapsedTimeSpan = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalActiveTime + summary.TotalInactiveTime)); TimeSpan estimationTimeSpan = new TimeSpan(0, Convert.ToInt32(summary.TotalEstimation), 0); string estimation; if (summary.TotalEstimation == 0) { estimation = "Not estimated"; } else { estimation = ViewHelper.TimeSpanToTimeString(estimationTimeSpan); } item.SubItems[TimeHeader.Index].Text = ViewHelper.TimeSpanToTimeString(elapsedTimeSpan); item.SubItems[ActiveTimeHeader.Index].Text = ViewHelper.TimeSpanToTimeString(activeTimeSpan); item.SubItems[InactiveTimeHeader.Index].Text = ViewHelper.TimeSpanToTimeString(inactiveTimeSpan); item.SubItems[GoalHeader.Index].Text = estimation; item.SubItems[PercentHeader.Index].Text = percent.ToString("0.0%", CultureInfo.InvariantCulture); item.SubItems[PercentGoalHeader.Index].Text = goalPercent.ToString("0.0%", CultureInfo.InvariantCulture); if (goalPercent > 1) { item.SubItems[PercentGoalHeader.Index].ForeColor = Color.Red; } } }
private void ShowTaskSummary(object sender, EventArgs e) { TaskSummary rptVwTaskSummary = new TaskSummary(); _grdTimeEntry.DataSource = null; _grdTimeEntry.DataSource = rptVwTaskSummary.Fetch(_connection, _sUserId); _mnItmEdit_DeleteEntry.Enabled = false; _mnItmView_Detailed.Checked = false; _mnItmView_DailyTaskSummary.Checked = false; _mnItmView_DailySummary.Checked = false; _mnItmView_TaskSummary.Checked = true; _mnItmView_DailyTaskStatus.Checked = false; #region Old Script //StringBuilder strSql = new StringBuilder(); //strSql.AppendLine("SELECT Task, SUM(Time) * 24 AS ElapsedTime "); //strSql.AppendLine("FROM (SELECT DATEPART(mm, ActionTime) AS NumMonth, DATEPART(dd, ActionTime) AS NumDay, "); //strSql.AppendLine( "SUM(CONVERT(float, ActionTime)) * -1 AS Time, UserId, ActionTypeID, Task "); //strSql.AppendLine( "FROM TimeLog "); //strSql.AppendLine( "WHERE ActionTypeID = 0 "); //strSql.AppendLine( "GROUP BY DATEPART(mm, ActionTime), DATEPART(dd, ActionTime), UserId, ActionTypeID, Task "); //strSql.AppendLine( "UNION "); //strSql.AppendLine( "SELECT DATEPART(mm, ActionTime) AS NumMonth, DATEPART(dd, ActionTime) AS NumDay, "); //strSql.AppendLine( "SUM(CONVERT(float, ActionTime)) AS Time, UserId, ActionTypeID, Task "); //strSql.AppendLine( "FROM TimeLog AS TimeLog_1 "); //strSql.AppendLine( "WHERE ActionTypeID = 1 "); //strSql.AppendLine( "GROUP BY DATEPART(mm, ActionTime), DATEPART(dd, ActionTime), UserId, ActionTypeID, Task "); //strSql.AppendLine( "UNION "); //strSql.AppendLine( "SELECT DATEPART(mm, GETDATE()) AS NumMonth, DATEPART(dd, GETDATE()) AS NumDay, "); //strSql.AppendLine( "CASE WHEN (ActionTypeID = 0) THEN CONVERT(float, GETDATE()) ELSE 0 END AS Time, "); //strSql.AppendLine( "UserID, 1 AS ActionTypeID, Task "); //strSql.AppendLine( "FROM (SELECT TOP 1 * FROM TimeLog ORDER BY ActionTime DESC) AS LSTACT) AS TBL "); //strSql.AppendLine("WHERE UserId = '" + _sUserId + "' "); //strSql.AppendLine("GROUP BY Task "); //strSql.AppendLine("ORDER BY Task"); #endregion }
private void UpdateSummaryTime() { if (!this.Visible) { return; } if (this.fromDateTimePicker.Value > DateTime.Today || this.toDateTimePicker.Value < DateTime.Today) { return; } ListViewItem currentTaskSummary = null; int minGeneration = Int32.MaxValue; foreach (ListViewItem item in this.taskList.Items) { TaskSummary sum = (TaskSummary)item.Tag; int generations = Tasks.IsParent(sum.TaskId, Logs.CurrentLog.TaskId); if (generations >= 0 && generations < minGeneration) { minGeneration = generations; currentTaskSummary = item; } } if (currentTaskSummary != null) { TaskSummary sum = (TaskSummary)currentTaskSummary.Tag; if (!sum.IsActive) { sum.TotalInactiveTime++; } else { totalActiveTime++; sum.TotalActiveTime++; } totalTime++; this.CalculateTasksPercents(); SetIndicatorsValues(); } }
private static ArrayList ExecuteTaskSummary(DateTime initialDate, DateTime finalDate) { ArrayList summaryList = new ArrayList(); ArrayList list = DbHelper.ExecuteGetRows( "SELECT TasksLog.TaskId, Sum( TasksLog.Duration ) AS TotalTime FROM TasksLog " + "WHERE ( ( (TasksLog.InsertTime)>=? And (TasksLog.InsertTime)<=? ) )" + "GROUP BY TasksLog.TaskId;", new string[] {"InsertTimeFrom", "InsertTimeTo"}, new object[] {initialDate, finalDate}); foreach (IDictionary dictionary in list) { TaskSummary taskSum = new TaskSummary(); taskSum.TaskId = (int) dictionary["TaskId"]; taskSum.TotalActiveTime = (double) dictionary["TotalTime"]; summaryList.Add(taskSum); } //foreach return summaryList; } //ExecuteTaskSummary
/// <summary> /// Converts the specified status. /// </summary> /// <param name="status">The status.</param> /// <returns> /// The summary. /// </returns> private static TaskSummary Convert(ItemStatus status) { var model = new TaskSummary { Description = status.Description, Name = status.Name, Tasks = status.ChildItems.Any() ? status.ToModel() : null, Status = Convert(status.Status), Error = status.Error }; if (status.TimeStarted.HasValue || status.TimeCompleted.HasValue) { model.Times = new TaskSummaryTimes { Started = status.TimeStarted, Completed = status.TimeCompleted }; } return(model); }
public void GetTaskSummaryTest() { Task task1; task1 = Tasks.AddTask("TaskTest1", Tasks.RootTask.Id, true); Task task2; task2 = Tasks.AddTask("TaskTest2", Tasks.RootTask.Id, true); Task task3; task3 = Tasks.AddTask("TaskTest3", task1.Id, true); Task task4; task4 = Tasks.AddTask("TaskTest4", task1.Id, false); // Task row4; // row4 = new Task(); // row4.IsDefaultTask = true; // row4.Description = DefaultTasks.GetDefaultTask(3).Description; // row4.DefaultTaskId = DefaultTasks.GetDefaultTask(3).DefaultTaskId; // row4.ParentId = row1.Id; // row4.Id = Tasks.AddTasksRow(row4); Logs.StartLogging(); Logs.AddLog(task1.Id); Thread.Sleep(3000); Logs.AddLog(task1.Id); Thread.Sleep(2000); Logs.AddLog(task2.Id); Thread.Sleep(1000); Logs.AddLog(task2.Id); Thread.Sleep(1000); Logs.AddLog(task3.Id); Thread.Sleep(1000); Logs.AddLog(task3.Id); Thread.Sleep(2000); Logs.AddLog(task4.Id); Thread.Sleep(1000); Logs.AddLog(task4.Id); Thread.Sleep(2000); Logs.StopLogging(); //row1 ->5 + 3 ////row3->3 ////row4->3 //row2 ->2 ArrayList result; result = TasksSummaries.GetTaskSummary(Tasks.RootTask, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1)); Assert.AreEqual(2, result.Count); TaskSummary sum1 = FindTaskSummaryByTaskId(result, task1.Id); Assert.IsTrue(sum1.TotalActiveTime >= 8); Assert.IsTrue(sum1.TotalInactiveTime >= 3); TaskSummary sum2 = FindTaskSummaryByTaskId(result, task2.Id); Assert.IsTrue(sum2.TotalActiveTime >= 2); Assert.IsTrue(sum2.TotalInactiveTime == 0); result = TasksSummaries.GetTaskSummary(task1, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1)); Assert.AreEqual(3, result.Count); sum1 = FindTaskSummaryByTaskId(result, task1.Id); Assert.IsTrue(sum1.TotalActiveTime >= 5); Assert.IsTrue(sum1.TotalInactiveTime == 0); sum2 = FindTaskSummaryByTaskId(result, task3.Id); Assert.IsTrue(sum2.TotalActiveTime >= 3); Assert.IsTrue(sum2.TotalInactiveTime == 0); sum1 = FindTaskSummaryByTaskId(result, task4.Id); Assert.IsTrue(sum1.TotalActiveTime == 0); Assert.IsTrue(sum1.TotalInactiveTime >= 3); result = TasksSummaries.GetTaskSummary(task3, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1)); Assert.AreEqual(1, result.Count); sum1 = FindTaskSummaryByTaskId(result, task3.Id); Assert.IsTrue(sum1.TotalActiveTime >= 3); Assert.IsTrue(sum1.TotalInactiveTime == 0); result = TasksSummaries.GetTaskSummary(task4, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1)); Assert.AreEqual(1, result.Count); sum1 = FindTaskSummaryByTaskId(result, task4.Id); Assert.IsTrue(sum1.TotalActiveTime == 0); Assert.IsTrue(sum1.TotalInactiveTime >= 3); result = TasksSummaries.GetTaskSummary(task2, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1)); Assert.AreEqual(1, result.Count); sum1 = FindTaskSummaryByTaskId(result, task2.Id); Assert.IsTrue(sum1.TotalActiveTime >= 2); }
public void FailedParses(string line) { TaskSummary.TryParse(line, out _).ShouldBeFalse(); }
public static ArrayList GetTaskSummary(Task parentTask, DateTime initialDate, DateTime finalDate) { Logs.UpdateCurrentLogDuration(); ArrayList summaryList; ArrayList returnList = new ArrayList(); summaryList = ExecuteTaskSummary(initialDate, finalDate); while (summaryList.Count > 0) { TaskSummary currentSum = (TaskSummary) summaryList[0]; Task currentTask = Tasks.FindById(currentSum.TaskId); currentSum.Description = currentTask.Description; currentSum.IsActive = currentTask.IsActive; currentSum.IconId = currentTask.IconId; if (!currentSum.IsActive) { currentSum.TotalInactiveTime = currentSum.TotalActiveTime; currentSum.TotalActiveTime = 0; } //if currentSum.TotalEstimation = currentTask.Estimation; if (currentSum.TotalEstimation != 0) currentSum.TotalTimeOverEstimation = currentSum.TotalActiveTime + currentSum.TotalInactiveTime; if (currentTask.Id != Tasks.IdleTask.Id) //ignore idle time { if (currentTask.Id != parentTask.Id) { if (currentTask.ParentId ==-1) { summaryList.Remove(currentSum); continue; } //if if (currentTask.ParentId == parentTask.Id) { TaskSummary retSum = FindTaskSummaryByTaskId(returnList, currentSum.TaskId); if (retSum == null) { returnList.Add(currentSum); } else { retSum.TotalInactiveTime += currentSum.TotalInactiveTime; retSum.TotalActiveTime += currentSum.TotalActiveTime; retSum.TotalEstimation += currentSum.TotalEstimation; retSum.TotalTimeOverEstimation += currentSum.TotalTimeOverEstimation; } } else { TaskSummary currentSumParent; //First look at the return list currentSumParent = FindTaskSummaryByTaskId(returnList, currentTask.ParentId); if (currentSumParent==null)//If not found look at the summaryList currentSumParent = FindTaskSummaryByTaskId(summaryList, currentTask.ParentId); if (currentSumParent == null) //If parent not in the summary list { currentSumParent = currentSum; currentSumParent.TaskId = currentTask.ParentId; //just swith to parent task continue; //continue without remove the current sum from list } else //else acum totals { currentSumParent.TotalInactiveTime += currentSum.TotalInactiveTime; currentSumParent.TotalActiveTime += currentSum.TotalActiveTime; currentSumParent.TotalEstimation += currentSum.TotalEstimation; currentSumParent.TotalTimeOverEstimation += currentSum.TotalTimeOverEstimation; } } } else { currentSum.Description = NOT_DETAILED; returnList.Add(currentSum); } } //if summaryList.Remove(currentSum); } //while return returnList; } //GetTaskSummary
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //DataTable dt = this.TimeTrackData.Select("Where if (!string.IsNullOrEmpty(this.dayComboBox.SelectedValue.ToString())) { DataTable dt; string selectedDate = dayComboBox.SelectedValue.ToString(); typeSummary = new Dictionary <int, TaskInfo>(); taskSummary = new Dictionary <int, TaskInfo>(); subTaskSummary = new Dictionary <int, TaskInfo>(); if (dayComboBox.SelectedValue.ToString() != "All Days") { var results = from DataRow row in this.TimeTrackData.Rows where (DateTime.Parse(row["start_time"].ToString()).Date == DateTime.Parse(this.dayComboBox.SelectedValue.ToString()).Date //&& DateTime.Parse(row["start_time"].ToString()).Date <= DateTime.Parse(this.dayComboBox.SelectedValue.ToString()).Date.AddDays(1) ) select row; dt = results.CopyToDataTable(); } else { dt = this.TimeTrackData.Copy(); } foreach (TaskInfo ti in TypeResults) { int key; if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString()) { if (TypeSummary.Any(type => type.Value.Type_Id == ti.Type_Id)) { key = TypeSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id).Key; TypeSummary[key].Hours += ti.Hours; TypeSummary[key].Minutes += ti.Minutes; TypeSummary[key].Seconds += ti.Seconds; if (TypeSummary[key].Seconds >= 60) { TypeSummary[key].Minutes += 1; TypeSummary[key].Seconds -= 60; } if (TypeSummary[key].Minutes >= 60) { TypeSummary[key].Hours += 1; TypeSummary[key].Minutes -= 60; } } else { key = TypeSummary.Count; TaskInfo newTi = ti.Clone() as TaskInfo; TypeSummary.Add(key, newTi); } } } foreach (TaskInfo ti in TaskResults) { int key; if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString()) { if (TaskSummary.Any(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id)) { key = TaskSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id).Key; TaskSummary[key].Hours += ti.Hours; TaskSummary[key].Minutes += ti.Minutes; TaskSummary[key].Seconds += ti.Seconds; if (TaskSummary[key].Seconds >= 60) { TaskSummary[key].Minutes += 1; TaskSummary[key].Seconds -= 60; } if (TaskSummary[key].Minutes >= 60) { TaskSummary[key].Hours += 1; TaskSummary[key].Minutes -= 60; } } else { key = TaskSummary.Count; TaskInfo newTi = ti.Clone() as TaskInfo; TaskSummary.Add(key, newTi); } } } foreach (TaskInfo ti in SubTaskResults) { int key; if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString()) { if (SubTaskSummary.Any(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id && type.Value.Sub_Task_Id == ti.Sub_Task_Id)) { key = SubTaskSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id && type.Value.Sub_Task_Id == ti.Sub_Task_Id).Key; SubTaskSummary[key].Hours += ti.Hours; SubTaskSummary[key].Minutes += ti.Minutes; SubTaskSummary[key].Seconds += ti.Seconds; if (SubTaskSummary[key].Seconds >= 60) { SubTaskSummary[key].Minutes += 1; SubTaskSummary[key].Seconds -= 60; } if (SubTaskSummary[key].Minutes >= 60) { SubTaskSummary[key].Hours += 1; SubTaskSummary[key].Minutes -= 60; } } else { key = SubTaskSummary.Count; TaskInfo newTi = ti.Clone() as TaskInfo; SubTaskSummary.Add(key, newTi); } } } TypeResultsGridView.DataSource = SummaryToDataTable(TypeSummary, TaskType.Type); TaskResultsGridView.DataSource = SummaryToDataTable(TaskSummary, TaskType.Task); SubTaskResultsGridView.DataSource = SummaryToDataTable(SubTaskSummary, TaskType.SubTask); Series series = new Series() { Name = "Test", Color = System.Drawing.Color.Gray, IsVisibleInLegend = true, ChartType = SeriesChartType.Bar }; //series.Points.AddXY("1/2/14", 10); //SummaryToSeries(this.TypeChart, selectedDate, TypeSummary, TaskType.Type); //this.TypeChart.ser //dt.Rows.Add(results); } }
private static ArrayList ExecuteTaskSummary(DateTime initialDate, DateTime finalDate) { ArrayList summaryList = new ArrayList(); ArrayList list = DbHelper.ExecuteGetRows( "SELECT TasksLog.TaskId, Sum( TasksLog.Duration ) AS TotalTime FROM TasksLog " + "WHERE ( ( (TasksLog.InsertTime)>=? And (TasksLog.InsertTime)<=? ) )" + "GROUP BY TasksLog.TaskId;", new string[] {"InsertTimeFrom", "InsertTimeTo"}, new object[] {initialDate, finalDate}); foreach (IDictionary dictionary in list) { TaskSummary taskSum = new TaskSummary(); taskSum.TaskId = (int) dictionary["TaskId"]; taskSum.TotalActiveTime = (double) dictionary["TotalTime"]; summaryList.Add(taskSum); } //foreach return summaryList; }
public string GetTaskSummary(string startDate, string endDate, string machineNo, string machineGroup, string machineModel, string pdLine) { TaskSummary summary = new TaskSummary(); summary.StartTime = string.IsNullOrEmpty(startDate) ? DateTime.Now.Date : Convert.ToDateTime(startDate).Date; summary.EndTime = string.IsNullOrEmpty(endDate) ? DateTime.Now.Date : Convert.ToDateTime(endDate).Date; var result = _context.JobTasks.Include(c => c.JobEntity) .Include(c => c.Machine) .Include(c => c.JobEntity) .Where(x => x.StartDate.Date >= summary.StartTime.Date && x.StartDate.Date <= summary.EndTime.Date && x.ReleaseFlag && (string.IsNullOrEmpty(x.MachineNoReady) ? x.MachineNo : x.MachineNoReady) == machineNo) .OrderBy(o => o.Priority) .ThenBy(o => o.StartDate) .ToList(); machineGroup = machineGroup.Replace("- Optional -", string.Empty); pdLine = pdLine.Replace("- Optional -", string.Empty); if (!string.IsNullOrEmpty(machineGroup)) { result = result.Where(x => x.Machine.MacGroup == machineGroup).ToList(); } if (!string.IsNullOrEmpty(machineModel)) { result = result.Where(x => x.Machine.MachineModel == machineModel).ToList(); } if (!string.IsNullOrEmpty(pdLine)) { result = result.Where(x => x.Machine.ProductionLine == pdLine).ToList(); } //Summaries summary.TasksAll = result; int i = 1; foreach (var item in summary.TasksAll.Where(x => !x.McFinishFlag && !x.CancelFlag).OrderBy(o => o.Priority).ToList()) { TasksQueuing task = new TasksQueuing(); task.Seq = i; task.PartNumber = item.JobEntity.PrimaryItemCode; task.MachineCode = item.Machine.MachineCode; task.JobNumber = item.JobEntity.JobEntityName; task.TableNumber = item.TableNumber; task.DueDate = item.DueDate; task.RequiredDate = item.EndDate.ToString("dd/MM/yyyy HH:mm"); if (item.StartFlag) { task.ProductionStatus = "Inprogress"; } else { task.ProductionStatus = "Pending"; } summary.TasksQueuing.Add(task); i++; } foreach (var item in summary.TasksAll.Where(x => x.StartFlag && x.McFinishFlag && !x.CancelFlag).OrderBy(o => o.DueDate).ToList()) { ProductionRecord rec = new ProductionRecord(); rec.PartNumber = item.JobEntity.PrimaryItemCode; rec.MachineNo = item.Machine.MachineCode; rec.JobNumber = item.JobEntity.JobEntityName; rec.TableNumber = item.TableNumber; rec.DueDate = item.DueDate; rec.NcFile = item.NcFile; var logs = _context.TaskTransactionLogs.Where(x => x.TaskId == item.Id).ToList(); DateTime startTime = logs.Where(x => x.ActionName == "START").FirstOrDefault().ActionTimeStamp; DateTime finishTime = logs.Where(x => x.ActionName == "MC_FINISH").FirstOrDefault().ActionTimeStamp; rec.StartTime = startTime.ToString("dd/MM/yyyy HH:mm"); rec.FinishTime = finishTime.ToString("dd/MM/yyyy HH:mm"); rec.MachineTimeHr = (finishTime - startTime).TotalHours.ToString("#0.00"); summary.TasksRecord.Add(rec); i++; } return(JsonConvert.SerializeObject(summary, new JsonSerializerSettings() { PreserveReferencesHandling = PreserveReferencesHandling.Objects, Formatting = Formatting.Indented })); }