private FilterResult FilterData(UserExperienceService svc, UserExperienceSearchViewModel viewModel, bool isDownload) { var grid = svc.SearchUsers(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}", isDownload ? String.Format("{0} ({1})", d.Search, d.SearchArtifactId) : String.Format(@"<a onclick=""javascript:window.open('/Relativity/Case/History/QueryTextPopup.aspx?AppID={0}&AuditID={1}&AuditEmement=28','HistoryPopup','height=600,width=800,location=no,scrollbars=no,menubar=no,toolbar=no,status=no,resizable=yes');"" href=""#"">{2}</a>", d.CaseArtifactId, d.AuditId, String.Format("{0} ({1})", d.Search, d.SearchArtifactId)), $"{d.User} ({d.UserArtifactId})", $"{d.PercentLongRunning}%", d.IsComplex ? "Complex" : "Simple", d.TotalRunTime.ToString(), d.AverageRunTime.ToString(), d.TotalRuns.ToString(), d.QoSHourID.ToString(), d.IsActiveWeeklySample ? "Yes" : "No" }).ToArray(); return(new FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
private string FetchFileData(UserExperienceService svc, UserExperienceSearchViewModel viewModel) { var filterResult = FilterData(svc, viewModel, true); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Search", "User", "Percent Long-Running", "Complex / Simple", "Total Run Time", "Average Run Time", "Total Runs", "QoS Hour ID", "Weekly Sample" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
/// <summary> /// Translates a Search view into grid data /// </summary> /// <param name="viewModel"></param> /// <returns></returns> private DataTableResponse FetchSearchGridData(UserExperienceService svc, UserExperienceSearchViewModel viewModel) { var filterData = FilterData(svc, viewModel, false); var dtResponse = new DataTableResponse() { sEcho = string.IsNullOrEmpty(viewModel.GridConditions.sEcho) ? "1" : viewModel.GridConditions.sEcho, aaData = filterData.Data, recordsTotal = filterData.Data.Count(), recordsFiltered = filterData.TotalRecordCount }; return(dtResponse); }
private void Initialize(UserExperienceSearchViewModel model, string workspaceParam, string searchParam) { int workspaceId; if (int.TryParse(workspaceParam, out workspaceId)) { model.FilterConditions.CaseArtifactId = workspaceId; } if (!string.IsNullOrEmpty(searchParam)) { model.FilterConditions.Search = searchParam; } var json = new JavaScriptSerializer().Serialize(model); VarscatState.Value = json; TimezoneOffset.Value = RequestService.GetTimezoneOffset(this.Request).ToString(); SampleStart.Value = base.GlassInfo.MinSampleDate.GetValueOrDefault(DateTime.UtcNow).ToString("s"); }
/// <summary> /// Pulls query parameters from the request and converts them to grid and filter conditions for the Search View /// </summary> /// <returns></returns> private UserExperienceSearchViewModel PopulateSearchModelSettings(int workspaceId) { var model = new UserExperienceSearchViewModel(); var queryParams = this.requestService.GetQueryParamsDecoded(Request); //Grid conditions model.GridConditions = PopulateCommonGridConditions(queryParams); var iSortCol = queryParams.FirstOrDefault(k => k.Key == "iSortCol_0"); var sSortDir = queryParams.FirstOrDefault(k => k.Key == "sSortDir_0"); var sortColumn = string.IsNullOrEmpty(iSortCol.Value) ? null : (SearchViewColumns?)System.Enum.Parse(typeof(SearchViewColumns), iSortCol.Value); var sortBy = sortColumn.HasValue ? sortColumn.Value.ToString() : null; model.GridConditions.SortIndex = iSortCol.Value; model.GridConditions.SortColumn = sortBy; model.GridConditions.SortDirection = sSortDir.Value; //Filter conditions var hourFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_0"); var searchFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_1"); var userFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_2"); var pctLRQFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_3"); var complexFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_4"); var totalRunTimeFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_5"); var avgRunTimeFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_6"); var numberOfRunsFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_7"); var qosHourFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_8"); var weeklyFilter = queryParams.FirstOrDefault(k => k.Key == "sSearch_9"); int avgRunTime, numberOfRuns, percentLongRunning; Int64 qosHour, totalRunTime; DateTime hour; model.FilterConditions = new SearchViewFilterConditions() { SummaryDayHour = DateTime.TryParse(HttpUtility.UrlDecode(hourFilter.Value), out hour) ? hour : (DateTime?)null, CaseArtifactId = workspaceId, Search = searchFilter.Value, User = userFilter.Value, TotalRunTime = Int64.TryParse(totalRunTimeFilter.Value, out totalRunTime) ? totalRunTime : (Int64?)null, AverageRunTime = int.TryParse(avgRunTimeFilter.Value, out avgRunTime) ? avgRunTime : (int?)null, NumberOfRuns = int.TryParse(numberOfRunsFilter.Value, out numberOfRuns) ? numberOfRuns : (int?)null, PercentLongRunning = int.TryParse(pctLRQFilter.Value.Replace("%", string.Empty), out percentLongRunning) ? percentLongRunning : (int?)null, IsComplex = string.IsNullOrEmpty(complexFilter.Value) ? null : (bool?)complexFilter.Value.Equals("complex", StringComparison.CurrentCultureIgnoreCase), QoSHourID = Int64.TryParse(qosHourFilter.Value, out qosHour) ? qosHour : (Int64?)null, IsActiveWeeklySample = string.IsNullOrEmpty(weeklyFilter.Value) ? null : (bool?)weeklyFilter.Value.Equals("yes", StringComparison.CurrentCultureIgnoreCase) }; //Filter operands System.Enum.TryParse <FilterOperand>(queryParams.FirstOrDefault(k => k.Key == "sOperand_3").Value, out model.FilterOperands.PercentLongRunning); System.Enum.TryParse <FilterOperand>(queryParams.FirstOrDefault(k => k.Key == "sOperand_5").Value, out model.FilterOperands.TotalRunTime); System.Enum.TryParse <FilterOperand>(queryParams.FirstOrDefault(k => k.Key == "sOperand_6").Value, out model.FilterOperands.AverageRunTime); System.Enum.TryParse <FilterOperand>(queryParams.FirstOrDefault(k => k.Key == "sOperand_7").Value, out model.FilterOperands.TotalRuns); System.Enum.TryParse <FilterOperand>(queryParams.FirstOrDefault(k => k.Key == "sOperand_8").Value, out model.FilterOperands.QoSHourID); return(model); }