我正在编写一个简单的任务调度应用程序。目前停留在一些UI。我当天为用户分配的任务很少。任务分配时间为上午10:00至下午01:00和下午02:00至下午04:00。
我当前可以在div中显示该时间段内的所有任务以及可供新任务进入的时间段。
我想要实现的是,迭代完成任务并根据开始和结束时间附加块。
**我编辑了DOM以显示我的目标,显示采样时间。
@helper Tasks(int _UserId, DateTime _CurrentDay)
{
//Get all Tasks assigned to the user for _CurrentDay
var _Tasks = Model.Tasks
.Where(t => t.UserId == _UserId
&& Convert.ToDateTime(t.dtTaskEnd).Date == _CurrentDay.Date);
//Total assigned task hours
int _TotalTaskHrs = 0;
//Loop through all the tasks
foreach (var _Task in _Tasks)
{
//Current Task Hours
int _TaskHrs = (Convert.ToDateTime(_Task.dtTaskEnd).Hour - Convert.ToDateTime(_Task.dtTaskStart).Hour);
<div class="job-task" data-hours="@_TaskHrs">
<h2>@_Task.TaskName</h2>
<p>@_Task.TaskCode</p>
<div class="clearfix"></div>
<p>@_Task.Notes</p>
<!--edit btn-->
<span class="job-task-edit" onclick="_ism.tasks.edit(@_Task.TaskId)">
<i class="fa fa-edit"></i>
</span>
</div>
_TotalTaskHrs += _TaskHrs;
}
//Unassigned Hours
int _EmptyHrs = 8 - _TotalTaskHrs;
if (_EmptyHrs > 0)
{
<div class="job-task job-task-empty" data-hours="@_EmptyHrs">
<!--Add btn-->
<span class="job-task-edit" onclick="_ism.tasks.add(this,@_UserId)">
<i class="fa fa-plus-square"></i>
</span>
</div>
}
}
第一个街区应该从10:00开始,并在下午1:00结束
所以,块应该看起来像。
[Empty 09:00 - 10:00] [TST2 10:00 - 01:00] [Empty 01:00 - 02:00] [TST124 02:00 - 04:00] [Empty 04:00 - 0500 ]
任何指针都会有所帮助。
此致
答案 0 :(得分:0)
您首先将所有任务添加到当天,然后使用空插槽填充其余任务。 我的建议是重新考虑你发送给View的模型,也许它应该已经包含空任务?或者如果不可能将if语句移动到for-each中。伪代码:
int currentHour = 9
foreach (var task in tasks.OrderBy(t=>t.dtTaskStart))
{
if (task.dsTaskStart > currentHour)
//fill with empty slot
//empty slot filled we can now fill the task slot
currentHour = task.dtTaskEnd;
}