public static List <TimesheetGroupResult> GetUserMissingTimesheets(User user, DateTime fromDate, DateTime toDate) { List <TimesheetGroupResult> items = new List <TimesheetGroupResult>(); var groupBy = new string[] { "ReportedDate" }; var orderBy = new orderBy[] { new orderBy("ReportedDate", "Ascending"), }; var aggregations = new fieldAggregation[] { new fieldAggregation("Sum", "C_DurationHours", "TotalTime") }; var condition = new cZQLCondition($@" ReportedBy = ""{user.id}"" AND ReportedDate >= ""{fromDate:yyyy-MM-dd}"" AND ReportedDate <= ""{toDate:yyyy-MM-dd}"" "); var paging = new paging() { from = 0, limit = Int32.MaxValue, hasMore = true }; var query = new Ekin.Clarizen.Data.Queries.aggregateQuery("Timesheet", groupBy, orderBy, condition, aggregations, paging); var result = ClarizenAPI.AggregateQuery(query); if (result.IsCalledSuccessfully) { items = result.Data.entities.Select(i => Newtonsoft.Json.JsonConvert.DeserializeObject <TimesheetGroupResult>(i.ToString())).ToList(); } return(items); }
public override void DoWindowContents(Rect r) { base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) { isDirty = true; } if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 110f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(sourceButton, ("koisama.pawntype." + chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += 190; //stats btn Rect addColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += 190; //skills btn if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += 190; } //needs btn Rect needsColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += 190; Rect otherColumnBtn = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += 190; x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.InvisibleButton(nameLabel)) { if (chosenOrderBy == orderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = orderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation bool offset = true; kListDesiredWidth = 175f; for (int i = 0; i < kList.Count; i++) { float colWidth = kList[i].minWidthDesired; kListDesiredWidth += colWidth; Rect defLabel = new Rect(x - 35, 20f + (offset ? 10f : 50f), colWidth + 70, 40f); Widgets.DrawLine(new Vector2(x + colWidth / 2, 52f + (offset ? 15f : 55f)), new Vector2(x + colWidth / 2, 110f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.InvisibleButton(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == orderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = orderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }
public override void DoWindowContents(Rect r) { base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) isDirty = true; if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 110f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(sourceButton, ("koisama.pawntype." + chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += 190; //stats btn Rect addColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += 190; //skills btn if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += 190; } //needs btn Rect needsColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += 190; Rect otherColumnBtn = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += 190; x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.InvisibleButton(nameLabel)) { if (chosenOrderBy == orderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = orderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation bool offset = true; kListDesiredWidth = 175f; for (int i=0;i<kList.Count; i++) { float colWidth = kList[i].minWidthDesired; kListDesiredWidth += colWidth; Rect defLabel = new Rect(x-35, 20f + (offset ? 10f : 50f), colWidth+70 , 40f); Widgets.DrawLine(new Vector2(x + colWidth/2 , 52f + (offset ? 15f : 55f)), new Vector2(x + colWidth/2 , 110f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.InvisibleButton(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == orderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = orderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }
public override void DoWindowContents(Rect r) { var component = Find.World.GetComponent <WorldComponent_Numbers>(); maxWindowWidth = Screen.width; base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) { isDirty = true; } if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 115f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(sourceButton, ("koisama.pawntype." + component.chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += buttonWidth + 10; TooltipHandler.TipRegion(sourceButton, new TipSignal("koisama.Numbers.ClickToToggle".Translate(), sourceButton.GetHashCode())); //stats btn Rect addColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += buttonWidth + 10; //skills btn if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(component.chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += buttonWidth + 10; } //needs btn Rect needsColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += buttonWidth + 10; //cap btn Rect capacityColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(capacityColumnButton, "koisama.Numbers.AddCapacityColumnLabel".Translate())) { CapacityOptionsMaker(); } x += buttonWidth + 10; Rect otherColumnBtn = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += buttonWidth + 10; //TODO: implement /* * Rect addPresetBtn = new Rect(x, 0f, buttonWidth, PawnRowHeight); * if (Widgets.ButtonText(addPresetBtn, "koisama.Numbers.SetPresetLabel".Translate())) * { * PresetOptionsMaker(); * } * x += buttonWidth + 10; */ Rect thingCount = new Rect(10f, 45f, 200f, 30f); Widgets.Label(thingCount, "koisama.Numbers.Count".Translate() + ": " + this.things.Count().ToString()); x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.ButtonInvisible(nameLabel)) { if (chosenOrderBy == orderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = orderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation bool offset = true; kListDesiredWidth = 175f; Text.Anchor = TextAnchor.MiddleCenter; for (int i = 0; i < kList.Count; i++) { float colWidth = kList[i].minWidthDesired; if (colWidth + kListDesiredWidth + cFreeSpaceAtTheEnd > maxWindowWidth) { break; } kListDesiredWidth += colWidth; Rect defLabel = new Rect(x - 35, 25f + (offset ? 10f : 50f), colWidth + 70, 40f); Widgets.DrawLine(new Vector2(x + colWidth / 2, 55f + (offset ? 15f : 55f)), new Vector2(x + colWidth / 2, 113f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.ButtonInvisible(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == orderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = orderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }