public List <KanbanGroup> GetData(ApiMissionVnextKanbanContent data) { var list = new List <KanbanGroup>(); _groupedIds = new List <string>(); foreach (var item in data.Data.References.Groups) { _groupedIds.AddRange(item.TaskIds); var kbGroup = new KanbanGroup { Header = item.Name }; foreach (var taskId in item.TaskIds) { ReadKanbanItem(data, kbGroup, taskId); } list.Add(kbGroup); } var unGroup = new KanbanGroup { Header = "未分组" }; var unGroupIds = data.Data.Value.Where(v => !_groupedIds.Contains(v.Id)); foreach (var item in unGroupIds) { ReadKanbanItem(data, unGroup, item.Id); } list.Insert(0, unGroup); return(list); }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { var kbp = new KanbanItemProperty { Name = property.Name }; SetColor(kbp, setting.Color); JObject jObj = JObject.FromObject(task); var span = JTokenHelper.GetPropertyValue <DateSpan>(jObj, property.Key); if (span.Begin.Date.HasValue && span.End.Date.HasValue) { kbp.Value = WtDateTimeHelper.ToWtKanbanDate(span.Begin.Date.Value) + " ~ " + WtDateTimeHelper.ToWtKanbanDate(span.End.Date.Value); kanban.Properties.Add(kbp); } }
public abstract void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data);
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { kanban.State = new Models.TaskState { Name = state.Name, Foreground = WtColorHelper.GetNewColor(state.Color), BoldGlyph = WtIconHelper.GetBoldGlyph(state.Type) }; }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { if (property.RawKey == "title") { kanban.Title = task.Title; } else { JObject jObj = JObject.FromObject(task); string value = JTokenHelper.GetPropertyValue <string>(jObj, property.Key); if (value != null) { var kbp = new KanbanItemProperty { Name = property.Name, Value = value }; SetColor(kbp, setting.Color); kanban.Properties.Add(kbp); } } }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { var kbp = new KanbanItemProperty { Name = "实际工时" }; SetColor(kbp, setting.Color); JObject jObj = JObject.FromObject(task); var workload = JTokenHelper.GetPropertyValue <WorkloadValue>(jObj, property.Key); if (workload.Actual != 0) { kbp.Value = workload.Actual.ToString(); kanban.Properties.Add(kbp); } }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { var kbp = new KanbanItemProperty { Name = property.Name }; SetColor(kbp, setting.Color); JObject jObj = JObject.FromObject(task); string uid = JTokenHelper.GetPropertyValue <string>(jObj, property.Key); if (!string.IsNullOrEmpty(uid)) { var avatar = AvatarHelper.GetAvatar(uid, AvatarSize.X40); if (property.RawKey == "assignee") { kanban.Due = avatar; } else { kbp.Value = avatar.DisplayName; kanban.Properties.Add(kbp); } } }
private void ReadKanbanItem(ApiMissionVnextKanbanContent data, KanbanGroup kbGroup, string taskId) { var task = data.Data.Value.Single(v => v.Id == taskId); var type = data.Data.References.TaskTypes.Single(t => t.Id == task.TaskTypeId); var state = data.Data.References.Lookups.TaskStates.Single(t => t.Id == task.TaskStateId); KanbanPageHelper.ReadForProgressBar(kbGroup, state.Type); var kanban = new KanbanItem { Id = task.Id, TaskType = new Models.TaskType { Name = type.Name, Color = WtColorHelper.GetColorByClass(type.Icon), Glyph = WtIconHelper.GetGlyph("wtf-type-" + type.Icon), }, Properties = new List <KanbanItemProperty>() }; foreach (var item in type.ShowSettings) { var property = data.Data.References.Properties.Single(p => p.Id == item.TaskPropertyId); PropertyReader reader = null; switch (property.Type) { case WtTaskPropertyType.Text: reader = new TextReader(); break; case WtTaskPropertyType.DateTime: reader = new DateTimeReader(); break; case WtTaskPropertyType.DateSpan: reader = new DateSpanReader(); break; case WtTaskPropertyType.Member: reader = new MemberReader(); break; case WtTaskPropertyType.Workload: reader = new WorkloadReader(); break; case WtTaskPropertyType.State: reader = new TaskStateReader(); break; case WtTaskPropertyType.Tag: reader = new TagReader(); break; case WtTaskPropertyType.Priority: reader = new PriorityReader(); break; case WtTaskPropertyType.File: reader = new AttachmentReader(); break; case WtTaskPropertyType.TaskType: continue; default: reader = new DefaultReader(); break; } reader.Read(kanban, property, task, state, item, data); } kbGroup.Items.Add(kanban); }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { var kbp = new KanbanItemProperty { Name = property.Name }; SetColor(kbp, setting.Color); JObject jObj = JObject.FromObject(task); WtDate date = null; if (property.Key.Count(k => k == '.') > 0) { date = JTokenHelper.GetPropertyValue <WtDate>(jObj, property.Key); } else { date = new WtDate(); string timestamp = jObj[property.Key].Value <string>(); if (timestamp != null) { date.Date = WtDateTimeHelper.GetDateTime(timestamp); } } if (date.Date.HasValue) { kbp.Value = date.Date.Value.ToWtKanbanDate(); if (property.RawKey == "due" && date.Date.Value < DateTime.Now) { kbp.Foreground = WtColorHelper.DangerColor; kbp.Background = WtColorHelper.DangerColor1A; } kanban.Properties.Add(kbp); } }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { JObject jObj = JObject.FromObject(task); string[] files = JTokenHelper.GetPropertyValue <string[]>(jObj, property.Key); kanban.AttachmentCount = files.Length; }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { JObject jObj = JObject.FromObject(task); string[] tagIds = JTokenHelper.GetPropertyValue <string[]>(jObj, property.Key); if (tagIds.Length > 0) { foreach (var id in tagIds) { var tag = data.Data.References.Lookups.Tags.Single(t => t.Id == id); var kbp = new KanbanItemProperty { Value = tag.Name, Foreground = new SolidColorBrush(Colors.White), Background = WtColorHelper.GetNewBrush(tag.Color) }; kanban.Properties.Add(kbp); } } }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { JObject jObj = JObject.FromObject(task); var value = JTokenHelper.GetPropertyValue <string>(jObj, property.Key); if (value != null) { var priority = data.Data.References.Lookups.Priorities.Single(p => p.Id == value); kanban.Priority = WtColorHelper.GetNewBrush(priority.Color); } }
public override void Read(KanbanItem kanban, WtTaskProperty property, ValueElement task, TaskState state, ShowSetting setting, ApiMissionVnextKanbanContent data) { var kbp = new KanbanItemProperty { Name = property.Name }; SetColor(kbp, setting.Color); JObject jObj = JObject.FromObject(task); string value = JTokenHelper.GetPropertyValue <string>(jObj, property.Key); if (value != null) { if (property.Lookup == null) { kbp.Value = value; } else { JObject lookup = JObject.FromObject(data.Data.References.Lookups); var jItem = lookup[property.Lookup].Single(item => item["_id"].Value <string>() == value); if (jItem is JObject obj) { if (obj.ContainsKey("name")) { kbp.Value = jItem["name"].Value <string>(); kanban.Properties.Add(kbp); } else if (obj.ContainsKey("text")) { kbp.Value = jItem["text"].Value <string>(); kanban.Properties.Add(kbp); } } } } }